读书人

aspnetpage分页有关问题

发布时间: 2012-08-02 11:35:25 作者: rapoo

aspnetpage分页问题
存储过程

SQL code
if exists(select *from  sysobjects where name='gettest')drop proc gettestgocreate proc gettest@startIndex INT, @pageSize INT ASwith SClass as(select row_number() over(order by id) as rownumber,id,custname,addtime from company)/**上半句产生一个临时表,表名为Small_Class,其内容来自于自查询select row_number().......**/select rownumber, id,custname,addtimefrom SClasswhere rownumber >=(@startindex-1)*@pagesize+1 and rownumber<=(@startindex-1)*@pagesize+(@pagesize)select count(*) from company

后台代码
C# code
DataSet ds = new DataSet();    DataTable dt = new DataTable();       protected void Page_Load(object sender, EventArgs e)    {        if (!Page.IsPostBack)        {            SetBind();        }    }    protected void SetBind()    {        ds = getmes(AspNetPager1.CurrentPageIndex, 20);        dt = ds.Tables[0];        AspNetPager1.RecordCount = int.Parse(ds.Tables[1].Rows[0][0].ToString());        Repeater1.DataSource = dt;        Repeater1.DataBind();             }    protected void PageChanged(object sender, EventArgs e)    {        SetBind();    }    protected DataSet getmes(int startindex, int pagesize)    {        SqlParameter[] par =          {            new SqlParameter("@startindex",SqlDbType.Int),            new SqlParameter("@pagesize",SqlDbType.Int)         };        par[0].Value = startindex;        par[1].Value = pagesize;        return SqlHelper.ExecuteDataSet(SqlHelper.ConnectionString, CommandType.StoredProcedure, "gettest", par);    }


为什么后面多出很多页是空的,没数据,页面计算错误,我不知道哪里错了!

[解决办法]
应该问题是出现了在这里
AspNetPager1.RecordCount = int.Parse(ds.Tables[1].Rows[0][0].ToString());

你控件上的记录总数为当前页面上的条数,这样当然不对了
AspNetPager1.RecordCount应该为你总的记录数

总页数=总记录数/每页记录数量+1

读书人网 >asp.net

热点推荐