asp.net的操作方式的确是全部读取下来,然后进行分页的。你也可以自己写SQL实现啊
select top 10 * from table 
(假定你的一页10条纪录)datagrid可以自己定制页脚,你可以在这里写你的分页按钮

解决方案 »

  1.   

    为什么要自己写呀?
    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    DataGrid1.CurrentPageIndex=e.NewPageIndex;
    BindData();
    }
    void BindData()
    {
       DataGrid1.DataSource=oDs.Tables["table1"].DefaultView;
       DataGrid1.DataBind();
    }
      

  2.   

    可以用我写的这个AspNetPager分页控件来分页,我还专门写了分页存储过程和数据绑定代码创建工具,使得用这个控件分页容易而且高效多了,示例及下载:http://www.webdiyer.com
      

  3.   

    我想补充一下sunny6281的看法!在显示某一页的记录时,需要保存这页的beginid(最小编号),以及endid(最大编号),假设你的数据表编号不连续,这个做法可以使你每次取固定的记录条数获得了beginid和endid.
    从当前页看下一页,则 select top 10 * from table where id>endid
    从当前页看前一页,则 select top 10 * from table where id<beginid order by id desc这样,每次可以从数据库中取10条记录,不需要将整个表的记录取出来!但是有一个问题,我现在在考虑,这样的做法,只能提供给用户“上一页”,“下一页”两个超连接。如果我将所有页码都罗列出来,我在给每页的标记的超连接的时候,怎么确定其中任何一页的开始记录编号和结束记录编号呢!即使可以,我想想也很麻烦!高手们给点意见!