最近在做.net项目中,出现了一个问题(这个问题很早就遇到过,但一直没有得解决,也没有深究),这次不得不研究一下到底是哪个地方出现了错误!
问题描述:在多重条件搜索数据后绑定DataList时,第一次搜索没有任何问题,但是当翻页后(这时CurrentPageIndex !=0),再次更换条件搜索时就出现如下错误 :
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
“/”应用程序中的服务器错误。
无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
经过分析才找到,原来是第二次搜索的数据页数小于目前的CurrentPageIndex 值,解决方法:只需要在第二次绑定数据之前把CurrentPageIndex =0即可解决问题了。
//根据SQL查询语句得到符合搜索条件的用户
private void DataGridBind(string strSQL)
...{
factory = ProviderFactory.Create();
DataSet ds = new DataSet();
using(IDbConnection connection = factory.CreateConnection())
...{
connection.Open();

DBAccessHelper.FillDataSet(factory,connection,strSQL,ds,new string[] ...{"CS_Supply_Require"});
}
this.dgList.DataSource = ds.Tables[0];
if((ds.Tables[0].Rows.Count + this.dgList.PageSize - 1)/this.dgList.PageSize < this.dgList.CurrentPageIndex + 1)
...{
this.dgList.CurrentPageIndex = 0;
}
this.dgList.DataBind();
}
在.NET项目中,初次搜索后翻页再更换条件搜索时,DataList出现'无效的CurrentPageIndex值'异常。原因是二次搜索数据的页数小于当前CurrentPageIndex。解决方案是在重新绑定数据前设置CurrentPageIndex为0。
1万+

被折叠的 条评论
为什么被折叠?



