我现在有四种做分页的方法。
第一,就是用gridview自带的分页功能。当时我们老师说,如果他做项目,他绝对不会用这些自带的分页功能的,因为效率低。这种分页是不是将所有的数据都读出来,然后再分页啊?第二,就是用存储过程分页,目前我还不会。这种分页是不是只把当前页的数据读出来啊?第三和第四差不多,都是用 PagedDataSource pds = new PagedDataSource();这个东西来分页。第三是用传说中的get方法,在网址里面传页数,
比如**.aspx?page=1.  但是我见论坛里面几乎没有用这种方法的。
第四种,是老师交给我们的,我感觉挺好用,但是传值需要用viewstate,这个让我一直不爽,刚查了下viewstate不会牺牲内存,但会牺牲一点流量。我不太明白,不知道对不对?
还有谁能给我解释下,用pagedatasource分页与gridview自带的分页和存储过程分页都有什么区别?一般情况下都怎么分页?或者说大家都怎么分页?

解决方案 »

  1.   

    用存储过程 只提取 pagesize 条 记录就 OK了 
      

  2.   

    那如果要是小数据量的呢?也用存储过程吗?我是这么想的,大数据量的时候采用存储过程,小数据量用pagedatasource,不知道对不对?
      

  3.   

    GridView的分页实际上就是用PagedDataSource,GridView本身并没有分页功能...你还可以用ObjectDataSource控件提供的分页功能来分页...这样可以不用SP也能做到和SP相仿的分页...至于你说的“传值需要用viewstate”的方法和分页无关,可以用ViewState传值的方法一定可以用URI或Session等其他方式传值...“viewstate不会牺牲内存,但会牺牲一点流量”是因为ViewState会序列化后作为网页内容的一部分传递所以必然占流量...
      

  4.   

    最好写个分页控件,用top有几条取几条。以后用的多了
      

  5.   

    你可以在网上找找有很多存储过程分页,我的理解就是:一般分通用的和专用的。
    所谓通用的就是动态拼接的SQL语句,很自由,但是不能直接运行,要通过exec(动态拼接的SQL语句),才能运行,存在注入风险(在存储过程参数接受前做好处理才能避免注入);
    而专用的就是指定表的SQL,通过@参数,直接运行SQL,不存在注入风险的。影响分页速度的就是sql语句。
      

  6.   

    GridView自带的分页效率不高,存储过程分页也略觉麻烦,
    效率高而又能轻松搞定的是ObjectDataSource控件提供的分页功能,
    但数据库最好用sql2005