无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount
2006-09-19 12:01
381 查看
无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
情况一,两个文章类,A类文章有3页,B类文章有2页,绑定于同一个datagrid内,通过dropdownlist来切换绑定数据源时,如果在A类第3页时此时想切换到B类,则会提示
无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount
造成这个的原因是,当前datagrid的CurrentPageIndex(当前页)处于第三页,而B类并没有第三页,B类最大只有第二页,所以会导致CurrentPageIndex异常。
解决办法:在dropdownlist的SelectedIndexChanged事件中加入:myDg.CurrentPageIndex=0;//将当前页指定为第0页,避免发生异常
情况二,该情况经常发生,当datagrid删除多页中的最后一页的最后一条记录时会报该异常。
原因同样,此时当前页CurrentPageIndex处于最后一页,但当你将最后一条记录删除后,最后一页不存在,导致异常产生,针对此,使用网上很多人都转载的代码可以解决:
//首先判断当前页是否为最后一页,且该页只有最后一条记录
if((myDg.CurrentPageIndex==myDg.PageCount-1)&&myDg.Items.Count==1)
{
//如果当前页-1>1表示当前页为多页的最后一页
if(myDg.CurrentPageIndex-1>1)
{
//由于是多页中的最后一页,且是最后一条记录,会产生异常,此时将当前页手动减1,避免异常
myDg.CurrentPageIndex=myDg.CurrentPageIndex-1;
}
else
{
myDg.CurrentPageIndex=0;
}
}
最近在做客户关系管理系统字典这块,就是系统的基本数据录入模块,其实发现虽然是小模块,但是,里面的细节问题还是蛮多的,调试的时候,出了一个问题,解决了有出现另外一个问题,可能这是一个还没什么经验的程序员经常要面对的,有错就改,没什么了不起,耐心点就是了, 其中出的最多问题就是:无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。这个问题频繁的出现在DataGrid分页后删除,我这里做删除,用类似邮箱中的前面一个CheckBox,可以全选那样做的,普通的删除是可以做到的,但是一旦,删除最后一页的时候,由于当前索引页就会出错,参考了好久,找了好多资料这个问题终于解决了,是这样的,如果是删除最后一页,那么它当前的索引页就应该减1(如果当前总页数大于1),否则当前页索引为0。给大家看代码:
//删除
private void btnDel_Click(object sender ,System.Web.UI.ImageClickEventArgs e)
{
System.Collections.ArrayList list = new ArrayList();
string ContactTypeID="";
int Count=0;
foreach(DataGridItem item in this.dgContactType.Items)
{
if(((CheckBox)(item.Cells[0].FindControl("ChkSelect"))).Checked == true)
{
ContactTypeID= this.dgContactType.DataKeys[item.ItemIndex].ToString();
list.Add(ContactTypeID);
}
}
if(list.Count !=0)
{
SqlConnection con=SQLConnection.myConnection;
for(int k=0;k
{
string strSql = "delete from CONTACTTYPE where CONTACTTYPEID= '"+list[k].ToString()+"'";
SqlCommand cmd=new SqlCommand(strSql,con);
Count = cmd.ExecuteNonQuery();
}
if( Count == 0)
{
this.LblMessage.Text = " ";
}
else
{
this.LblMessage.Text = " ";
}
con.Close();
//删除最后一页,需要修改当前页索引
if((this.dgContactType.PageCount - this.dgContactType.CurrentPageIndex == 1) &&( this.dgContactType.Items.Count - list.Count == 0))
{
if(this.dgContactType.PageCount >1)
{
this.dgContactType.CurrentPageIndex =this.dgContactType.CurrentPageIndex -1;
}
else
{
this.dgContactType.CurrentPageIndex = 0;
}
}
this.DataBindToDG();//DataGrid重新绑定到数据库
}
}
另外再提个小问题,就是做了查询后,发现查出了冗余的数据,问题就出在了,换页事件上,因为换页后我重新绑定到DataGrid的数据是从数据库中全选的,这就难免会有冗余,现在DataGrid中的数据应该是符合查询条件的数据,换页事件中,新页也应该是符合查询条件的数据。所以现在就换页代码修改如下:
//当前索引页
private void dgContactType_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.dgContactType.CurrentPageIndex=e.NewPageIndex;
//当前绑定到DataGrid中的应该是查询后是数据,否则有冗余数据
string str=this.txtContactTypeFind.Text.ToString();
string strSql="select * from CONTACTTYPE where CONTACTTYPENAME like '%"+str+"%' order by CONTACTTYPEID";
DataSet ds=new DataSet();
ds=Common.GetDSCommon(strSql);
this.dgContactType.DataSource=ds.Tables[0].DefaultView;
this.dgContactType.DataBind();
}
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
情况一,两个文章类,A类文章有3页,B类文章有2页,绑定于同一个datagrid内,通过dropdownlist来切换绑定数据源时,如果在A类第3页时此时想切换到B类,则会提示
无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount
造成这个的原因是,当前datagrid的CurrentPageIndex(当前页)处于第三页,而B类并没有第三页,B类最大只有第二页,所以会导致CurrentPageIndex异常。
解决办法:在dropdownlist的SelectedIndexChanged事件中加入:myDg.CurrentPageIndex=0;//将当前页指定为第0页,避免发生异常
情况二,该情况经常发生,当datagrid删除多页中的最后一页的最后一条记录时会报该异常。
原因同样,此时当前页CurrentPageIndex处于最后一页,但当你将最后一条记录删除后,最后一页不存在,导致异常产生,针对此,使用网上很多人都转载的代码可以解决:
//首先判断当前页是否为最后一页,且该页只有最后一条记录
if((myDg.CurrentPageIndex==myDg.PageCount-1)&&myDg.Items.Count==1)
{
//如果当前页-1>1表示当前页为多页的最后一页
if(myDg.CurrentPageIndex-1>1)
{
//由于是多页中的最后一页,且是最后一条记录,会产生异常,此时将当前页手动减1,避免异常
myDg.CurrentPageIndex=myDg.CurrentPageIndex-1;
}
else
{
myDg.CurrentPageIndex=0;
}
}
最近在做客户关系管理系统字典这块,就是系统的基本数据录入模块,其实发现虽然是小模块,但是,里面的细节问题还是蛮多的,调试的时候,出了一个问题,解决了有出现另外一个问题,可能这是一个还没什么经验的程序员经常要面对的,有错就改,没什么了不起,耐心点就是了, 其中出的最多问题就是:无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。这个问题频繁的出现在DataGrid分页后删除,我这里做删除,用类似邮箱中的前面一个CheckBox,可以全选那样做的,普通的删除是可以做到的,但是一旦,删除最后一页的时候,由于当前索引页就会出错,参考了好久,找了好多资料这个问题终于解决了,是这样的,如果是删除最后一页,那么它当前的索引页就应该减1(如果当前总页数大于1),否则当前页索引为0。给大家看代码:
//删除
private void btnDel_Click(object sender ,System.Web.UI.ImageClickEventArgs e)
{
System.Collections.ArrayList list = new ArrayList();
string ContactTypeID="";
int Count=0;
foreach(DataGridItem item in this.dgContactType.Items)
{
if(((CheckBox)(item.Cells[0].FindControl("ChkSelect"))).Checked == true)
{
ContactTypeID= this.dgContactType.DataKeys[item.ItemIndex].ToString();
list.Add(ContactTypeID);
}
}
if(list.Count !=0)
{
SqlConnection con=SQLConnection.myConnection;
for(int k=0;k
{
string strSql = "delete from CONTACTTYPE where CONTACTTYPEID= '"+list[k].ToString()+"'";
SqlCommand cmd=new SqlCommand(strSql,con);
Count = cmd.ExecuteNonQuery();
}
if( Count == 0)
{
this.LblMessage.Text = " ";
}
else
{
this.LblMessage.Text = " ";
}
con.Close();
//删除最后一页,需要修改当前页索引
if((this.dgContactType.PageCount - this.dgContactType.CurrentPageIndex == 1) &&( this.dgContactType.Items.Count - list.Count == 0))
{
if(this.dgContactType.PageCount >1)
{
this.dgContactType.CurrentPageIndex =this.dgContactType.CurrentPageIndex -1;
}
else
{
this.dgContactType.CurrentPageIndex = 0;
}
}
this.DataBindToDG();//DataGrid重新绑定到数据库
}
}
另外再提个小问题,就是做了查询后,发现查出了冗余的数据,问题就出在了,换页事件上,因为换页后我重新绑定到DataGrid的数据是从数据库中全选的,这就难免会有冗余,现在DataGrid中的数据应该是符合查询条件的数据,换页事件中,新页也应该是符合查询条件的数据。所以现在就换页代码修改如下:
//当前索引页
private void dgContactType_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.dgContactType.CurrentPageIndex=e.NewPageIndex;
//当前绑定到DataGrid中的应该是查询后是数据,否则有冗余数据
string str=this.txtContactTypeFind.Text.ToString();
string strSql="select * from CONTACTTYPE where CONTACTTYPENAME like '%"+str+"%' order by CONTACTTYPEID";
DataSet ds=new DataSet();
ds=Common.GetDSCommon(strSql);
this.dgContactType.DataSource=ds.Tables[0].DefaultView;
this.dgContactType.DataBind();
}
相关文章推荐
- 显示错误-无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
- 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount
- 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount
- (转)无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
- 无效的 CurrentPageIndex 值.它必须大于等于 0 且小于 PageCount!的问题
- Asp.net解决无效的 CurrentPageIndex 值.它必须大于等于 0 且小于 PageCount!的问题方法
- 彻底解决!无效的 CurrentPageIndex 值.它必须大于等于 0 且小于 PageCount!的问题
- [转载]无效的 CurrentPageIndex 值.它必须大于等于 0 且小于 PageCount
- 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount(转)
- 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount之解决
- (转)无效的CurrentPageIndex 值。它必须大于等于0 且小于PageCount 解决方案
- 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
- 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
- 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount
- 无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount
- .Net中“无效的CurrentPageIndex值。它必须大于等于0且小于PageCount”错误的解决方法
- asp.net中“无效的CurrentPageIndex值。它必须大于等于0且小于PageCount”错误的解决方法
- 关于使用datagrid出现的CurrentPageIndex 值.它必须大于等于 0 且小于 PageCount!的问题
- 索引(从零开始)必须大于或等于零,且小于参数列表的大小
- 索引(从零开始)必须大于或等于零,且小于参数列表的大小的错位问题