先看代码:public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            int totalOrders = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, "select count(orderid) from orders");
            AspNetPager1.RecordCount = totalOrders;
            bindData();
        }
    }
    void bindData()
    {
        DataList1.DataSource = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text,"select * from Orders", null);
        DataList1.DataBind();
    }
    protected void AspNetPager1_PageChanged(object sender, EventArgs e)
    {
        bindData();
    }
}现在运行后不是分页显示了,一页就显示了全部.是不是bindData出问题了?怎么改过来?
还是AspNetPager本身就不支持sql语句的,只支持存储过程?
谢谢!!

解决方案 »

  1.   

    可以指出具体哪里改代码吗?
    是在bindData()中加this.AspNetPager1.pagesize=10  这样子?
    测试了,还是不行.
      

  2.   

    需要设置页面大小和当前页码
    当然ASPNETPAGER本身就是一个分页的表现层的控件,本身没有分页的功能,分页还是得自己写的.
      

  3.   

    你读取数据的方法就是把所有数据都选出来了.....
    这种情况下,你完全不需要用ASPNETPAGER了...用DATAGRID自带的分页就可以了...用ASPNETPAGER.取出来的数据就是当前页的数据....aspnetpager.pagesize = 10,取出来的就是10条...你先去找个通用分页的存储过程....
      

  4.   

    LZ读取的是数据总数,而不是这个数据表,在使用ASPNETPAGER的时候这个是必须的,DATAGRID的分页是假分页,是低性能的,用你的一句话,现在还有人把所有数据读出来再分页,无敌了.
      

  5.   

    AspNetPager1.RecordCount = totalOrders;
    这只是得到当前所有记录
    最后还的自己写一个pagedatascrors
      

  6.   

    我才不知道aspnetpager需要记录总数来...
    楼主用ASPNETPAGER来分页,又用DATAGRID自带分页的方式来读取数据,所以我说还不如用DATAGRID自带的分页.
    所以我叫他随便找个通用分页存储过程.取出来DS两个表,前一个就是记录数,后一个就是当前页数据.
    楼上的,做开发的不要这么小心眼...
    否则做不好开发.
      

  7.   

    不是DATAGRID,是DataList的吧.
    DataList本身没有带分页的
      

  8.   

    用什么控件都一样.
    用aspnetpager,分页存储过程是必须的.
      

  9.   

    你要是要使用aspnetpager进行分页的话,要使用分页存储过程,还要设置aspnatpager.Pagenum的值,这个值是用来定义每页显示数据的数量的.