索引超出范围。必须为非负值并小于集合大小。参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index源错误: 行 206: {
行 207: int index = e.Item.ItemIndex;//获得当前行的索引
行 208: int problem_ID = Convert.ToInt32(dg_problem.DataKeys[index].ToString());//获得当行的问题ID
行 209: int eval_ID = Convert.ToInt32(dg_problem.Items[index].Cells[12].Text.ToString().Trim());//获得位置12的单元格里的值(查评项目ID)
行 210: int a;//做为一个标识(1是新增,0是编辑)
源文件: d:\ses\webs\problem\drawreviseplan.aspx.cs 行: 208 堆栈跟踪: [ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
System.Collections.ArrayList.get_Item(Int32 index) +91
System.Web.UI.WebControls.DataKeyCollection.get_Item(Int32 index)
Siwei.SES.Webs.Problem.DrawRevisePlan.dg_problem_ItemCommand(Object source, DataGridCommandEventArgs e) in d:\ses\webs\problem\drawreviseplan.aspx.cs:208
System.Web.UI.WebControls.DataGrid.OnItemCommand(DataGridCommandEventArgs e)
System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
我调试的时候程序运行到这一步int problem_ID = Convert.ToInt32(dg_problem.DataKeys[index].ToString());
index里的值是0,希望大家帮帮我!这是怎么回事?
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index源错误: 行 206: {
行 207: int index = e.Item.ItemIndex;//获得当前行的索引
行 208: int problem_ID = Convert.ToInt32(dg_problem.DataKeys[index].ToString());//获得当行的问题ID
行 209: int eval_ID = Convert.ToInt32(dg_problem.Items[index].Cells[12].Text.ToString().Trim());//获得位置12的单元格里的值(查评项目ID)
行 210: int a;//做为一个标识(1是新增,0是编辑)
源文件: d:\ses\webs\problem\drawreviseplan.aspx.cs 行: 208 堆栈跟踪: [ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
System.Collections.ArrayList.get_Item(Int32 index) +91
System.Web.UI.WebControls.DataKeyCollection.get_Item(Int32 index)
Siwei.SES.Webs.Problem.DrawRevisePlan.dg_problem_ItemCommand(Object source, DataGridCommandEventArgs e) in d:\ses\webs\problem\drawreviseplan.aspx.cs:208
System.Web.UI.WebControls.DataGrid.OnItemCommand(DataGridCommandEventArgs e)
System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
我调试的时候程序运行到这一步int problem_ID = Convert.ToInt32(dg_problem.DataKeys[index].ToString());
index里的值是0,希望大家帮帮我!这是怎么回事?
如果一条也没有的话,那就超出范围了
int index = e.item.itemindex;
index = 1????
if(e.Item.ItemIndex>-1)
{
//你的内容
}
看看里面有没有内容不就知道了