日期:2014-05-19  浏览次数:20397 次

用PagedDataSource来分页,出现的问题...
索引   104   不是为负数,就是大于行数。。

这里是因为我在url上改了页码,比本来的页大了,所以就出错了

到底应该怎么在加载页面的时候判断requset[ "ipage "]大于总页数来提示错误信息呢?


我分页是用PagedDataSource的

                  if   (!Page.IsPostBack)
                {
                        string   sql   =   "select   *   from   jw_sub   order   by   jw_subid ";
                        con.Open();
                        DataSet   ds   =   new   DataSet();
                        SqlDataAdapter   da   =   new   SqlDataAdapter(sql,   con.Conn);
                        da.Fill(ds);
                        GridView1.DataSource   =   TBBind(ds);
                        GridView1.DataBind();
                        con.Close();

                }
其实TBBIND是分页的方法,我就不列出来了..
太烦了。现在输入页码一打就出现索引大于当前索引..
用批量删除的时候,批量删除最后一页就会出错
求高人指点...

------解决方案--------------------
针对你说的异常,有几个意思:

1. 在asp.net2.0中,应该不再使用DataSource属性,应该使用DataSourceID属性。

2. 如果一定要使用DataSource属性,应该在数据控件的DataBinding事件中进行预处理。对于你的程序,例如在页数大于最大页数的时候,应该设置为最大页数。


“到底应该怎么在加载页面的时候判断.....大于总页数来提示错误信息呢?”不知道你问什么。原本在异常时就会提示错误信息,你说的似乎asp.net不给你报告异常似的,你说的话不太合逻辑。
------解决方案--------------------
try
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sql, con.Conn);
da.Fill(ds);
GridView1.DataSource = TBBind(ds);
GridView1.DataBind();
}
catch
{
Response.Redirect( " "+Request.Path+ "?iPage= "+(Convert.ToInt32(Request.QueryString[ "iPage "])-1)+ " ");
}
加在PAGELOAD里面。