大家帮忙看一下好吗?
这个错误是什么原因啊索引超出范围。必须为非负值并小于集合大小。参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index
源错误:
行 90: SqlCommand commnd2=new SqlCommand(strsql2,connections);
行 91: commnd.Parameters.Add(new SqlParameter("@sid",SqlDbType.VarChar,50));
行 92: commnd.Parameters["@sid"].Value=Datagrid_student.DataKeys[(int)e.Item.ItemIndex];
行 93: commnd.Connection.Open();
行 94: commnd2.Parameters.Add(new SqlParameter("@sid",SqlDbType.VarChar,50));
源文件: c:\inetpub\wwwroot\jiaowums\managestudent.aspx.cs 行: 92
堆栈跟踪:
[ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
System.Collections.ArrayList.get_Item(Int32 index) +85
System.Web.UI.WebControls.DataKeyCollection.get_Item(Int32 index)
jiaowums.managestudent.DataGrid_delete(Object sender, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\jiaowums\managestudent.aspx.cs:92
System.Web.UI.WebControls.DataGrid.OnDeleteCommand(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()
--------------------编程问答-------------------- 帮忙看一下好吗? --------------------编程问答-------------------- 求求你们了 --------------------编程问答-------------------- 求求你们 --------------------编程问答-------------------- 请检查你查询的和你要用的字段是否是对应的,这是一种可能之一 --------------------编程问答-------------------- 估计是Datagrid_student.DataKeys[(int)e.Item.ItemIndex];中的e.Item.ItemIndex有问题,你在VS中单步调试一下看看e.Item.ItemIndex这个值是多少 --------------------编程问答-------------------- 对应的值出现了问题 --------------------编程问答-------------------- 不知道,帮顶 --------------------编程问答-------------------- 我调试的值是正数啊!会不会是DataDrid哪里要设置
--------------------编程问答-------------------- 行 92: commnd.Parameters["@sid"].Value=Datagrid_student.DataKeys[(int)e.Item.ItemIndex];
===============================================
你设置DataGrid的DataKeyField属性了吗? --------------------编程问答-------------------- 那再看看Datagrid的主键列设置了没?
主键列设置方式例如下面的DataKeyNames="Id":
<asp:GridView ID="Gridview1" AutoGenerateColumns="False" runat="server" DataKeyNames="Id" >
<Columns>
<asp:BoundField DataField="Name" HeaderText="姓名" />
<asp:BoundField DataField="LoginId" HeaderText="帐号" />
//在此定义你想要显示的列,要隐藏的列不定义
</Columns>
</asp:GridView>
补充:.NET技术 , ASP.NET