2010-09-11 198 views
1

指數我實現網格視圖在我的應用程序...當我試圖刪除從網格視圖記錄它拋出這個錯誤:指數超出範圍。必須是非負數且小於集合的大小。參數名:在C#asp.Net

指數超出範圍。必須是非負數且小於集合的大小。 參數名稱索引:

這是我的服務器端代碼:

protected void gridview1_RowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 

    foreach (GridViewRow gv in gridview1.Rows) 
    { 
     CheckBox check = (CheckBox)gv.FindControl("deleteall"); 
     if (check.Checked) 
     { 
      con.Open(); 
      if (gridview1.DataKeys != null) 
      { 
    **In this line only the error occurs** 
       int RegNo = Convert.ToInt32(gridview1.DataKeys[gv.RowIndex].Value); 
      } 
      cmd = new MySqlCommand("delete from studentinfo where Regno='" + 1 + "'", con); 
      // cmd.Parameters.Add("@id", RegNo); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 

     } 

    } 
} 

我的客戶端電網:

<asp:GridView ID="gridview1" runat="server" AutoGenerateColumns="False"  AllowSorting="True" onrowdeleting="gridview1_RowDeleting" SelectedIndex="1"> 
    <Columns> 
    <asp:TemplateField HeaderText="Delete All"> 
    <ItemTemplate> 
    <asp:CheckBox ID="deleteall" runat="server" /> 
    </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Register Number"> 
    <EditItemTemplate> 
    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("RegNo")    %>'></asp:TextBox> 
    </EditItemTemplate> 
    <ItemTemplate> 
     <asp:Label ID="Label2" runat="server" Text='<%# Bind("RegNo") %>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="Section"> 
    <EditItemTemplate> 
     <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Section") %>'></asp:TextBox> 
    </EditItemTemplate> 
    <ItemTemplate> 
     <asp:Label ID="Label3" runat="server" Text='<%# Bind("Section") %>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 
<asp:CommandField HeaderText="Delete" ShowDeleteButton="True" /> 
    </Columns> 
    </asp:GridView> 

任何一個可以請幫我SOVE這個問題提供一些思路或示例代碼...

+0

異常處的堆棧跟蹤處於什麼行? – 2010-09-11 10:43:02

+0

int RegNo = Convert.ToInt32(gridview1.DataKeys [gv.RowIndex] .Value); – 2010-09-11 10:54:07

+0

在這一行只有這個錯誤發生 – 2010-09-11 10:54:45

回答

3

datakeys集合本身可能不爲null,但它可以包含零個元素。在這個例子中,你的網格沒有設置DataKeyNames屬性,所以這個網格沒有跟蹤任何數據鍵(集合將是空的)。這可能是你得到索引錯誤的原因。

您應該設置DataKeyNames屬性。在您的代碼中,您還需要檢查以確保集合包含元素。

+0

感謝它後,我給了數據密鑰名稱.... – 2010-09-11 11:49:21

相關問題