日期:2014-05-18  浏览次数:20464 次

简单问题 GridView中的RowDeleting删除代码出现错误。
我需要用代码来实现删除功能。
后台代码;
protected void GridView1_RowDeleting(object sender GridViewDeleteEventArgs e)
  {
  int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
  user.dele(id);//调用删除方法
  bind();//绑定代码
  }
html代码如下:<asp:GridView ID="GridView1" runat="server" Height="86px" Width="514px" AutoGenerateColumns="false"OnRowDeleting="GridView1_RowDeleting">
  <Columns>
  <asp:BoundField DataField="ID" HeaderText="ID号码" />
  <asp:BoundFieldDataField="Name"HeaderText="姓名" />
  <asp:BoundField DataField="tel" HeaderText="tel" />
  .....
  <asp:CommandField ButtonType="Button" ShowDeleteButton="True" />
  </Columns>
  </asp:GridView>
运行出错:
索引超出范围。必须为非负值并小于集合大小
参数名: index 
请高手指导下,以前都用无代码实现的。现在用代码来实现就出错了。

------解决方案--------------------
你必须为gridview设置一个datakeynames,象下面的代码一样
HTML code
<asp:GridView DataKeyNames="MemberID" AutoGenerateColumns="false" ID="GridView1" runat="server">

------解决方案--------------------
C# code
GridView1.DataKeys[e.RowIndex].Value);