当前位置:编程问答 > C#/ASP.NET >

大家帮忙看一下好吗?

这个错误是什么原因啊

索引超出范围。必须为非负值并小于集合大小。参数名: 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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,