在gridview中删除范围超出范围

时间:2015-11-18 05:29:06

标签: c# asp.net gridview sharepoint

以下是从网格视图中删除行并从而更新内容列表的代码。但它使Index超出范围异常。

Grid视图的设计器代码就在这里。

<asp:GridView ID="GridViewD" runat="server" AlternatingRowStyle-BackColor="RoyalBlue" CssClass="Grid" AutoGenerateColumns="false" OnRowCancelingEdit="Cancel_Edit" OnRowDeleting="GridViewD_RowDeleting" OnRowEditing="Edit_Row" OnRowUpdating="Update_Row">
     <Columns>
        <asp:BoundField DataField="ID" HeaderText="ID"  />
        <asp:BoundField DataField="Title" HeaderText="Title" />
        <asp:BoundField DataField="Description" HeaderText="Description" />
        <asp:BoundField DataField="Cellphone" HeaderText="Contact" />
        <asp:CommandField ShowEditButton="true" />
        <asp:CommandField ShowDeleteButton="true" />      
        </Columns>
</asp:GridView>
<asp:Label ID="lbldata" runat="server" Text=""></asp:Label>

这是背后的代码。

protected void GridViewD_RowDeleting(object sender, GridViewDeleteEventArgs e)
{

    try
    {

        GridViewRow row = GridViewD.Rows[e.RowIndex];
        string itemId;
        itemId = ((TextBox)row.Cells[0].Controls[0]).Text;
        // itemId = GridViewD.DataKeys[e.RowIndex].Value.ToString();

        DeleteRow(itemId);
        Bind_Data();
    }


    catch (Exception ex)
    {

    }

}

private void DeleteRow(string itemId)
{


    using (SPSite site = new SPSite(SPContext.Current.Web.Url))
    {
        using (SPWeb web = site.OpenWeb())
        {
            SPList list = web.Lists.TryGetList("Advertisement");
            SPListItem item = null;
            item = list.GetItemById(int.Parse(itemId));
            web.AllowUnsafeUpdates = true;
            item.Delete();
            list.Update();
            web.AllowUnsafeUpdates = false;
        }
    }




}
  

索引超出范围异常。

如何解决?

1 个答案:

答案 0 :(得分:2)

我认为您的itemId获得了null个号码。请放置断点并检查itemId是否获得正确的值。

您可以尝试将模板更改为项目模板,并使用以下方法获取值。

GridViewRow row = GridViewD.Rows[e.RowIndex];
Label itemIdLabel = (Label)row.FindControl("YourLabelNameitemtemp");
string itemId = itemIdLabel.Text;  

希望这有帮助。