• 自己编写的 objectDataSource 配合 GridView 实现分页...


        使用 Gridview 的默认分页功能当然非常简单方便,问题是数据量比较大的时候会有一些延时(因为 Gridview 是把所有记录都加载到内存进行分页的),如果使用objectDataSource 配合 GridView(或其他控件)使用存储过程分页不存在这种情况,可以轻易实现大批量记录分页。

        拿100万条记录试验了一下:sqlDataSource + Gridview 自动分页后每翻一页需要大概10多秒,而使用 objectDataSource + GridView + 存储过程分页,每翻一页只需要不到两秒钟就可以了。

    这里面最关键的有几点:
    1.存储过程必须的两个参数要搞明白是什么意思,不是随便写个分页的存储过程就能用的!
    2.必须给 objectDataSource 的 SelectCountMethod 指定一个返回 int 类型的记录总数
    3.objectDataSource 的 EnablePaging 属性值指定为 True  时默认会提交两个参数(maximumRows 和 startRowIndex),就是存储过程中用到的那两个参数。默认在代码中是没有的,但是在 SelectMethod 方法中只管接收就是了(可以手工指定参数名)

    数据库结构:

    Code

    存储过程:

    Code

    页面布局:

    Code

    实体类:

    Code

    换个样式
    再完美一点,增加一个 dropdownlist 选择页码,把翻页换成下边图片中的样式:

    Gridview 增加页码样式定义:

    Code

    翻页代码:

    Code
  • 相关阅读:
    如何列出陣列中大於n的所有元素? (C/C++) (STL)
    為什麼int *ptr = 345;這樣的寫法有問題?
    如何使用STL寫XML轉檔程式? (C/C++) (STL) (Web) (XML)
    如何判斷回文(palindrome) ? (C/C++) (C) (STL)
    如何將int轉string? (C/C++) (C)
    如何將輸入的字串存到記憶體後,再一起印出來? (C/C++) (C)
    如何為程式碼加上行號? (C/C++) (STL)
    如何将字符串前后的空白去除(C/C++) (STL)
    簡單的Linked List實現
    如何將struct塞進vector? (C/C++) (STL)
  • 原文地址:https://www.cnblogs.com/jarod99/p/1379758.html
Copyright © 2020-2023  润新知