c#数据列表删除特定行

本文关键字:删除 数据 列表 | 更新日期: 2023-09-27 18:24:50

我目前正在开发一个留言簿系统,需要管理员删除特定的日志。问题是我在尝试删除它时遇到了一个错误。

错误为:Index was outside the range. It may not be negative and must be less than the crowd size. Parameter name: index

我的代码:asp.net

 <asp:DataList ID="guestBookDataList" runat="server" ondeletecommand="guestBookDataList_DeleteCommand">
    <ItemTemplate>
        <div id="guest-books">
            <span class="guestBook-Id"> # <%#DataBinder.Eval(Container.DataItem, "id") %></span><span class="guestBook-Name">Name: <%#DataBinder.Eval(Container.DataItem, "Name") %> </span>
            <span class="guestBook-Date"> Date: <%#DataBinder.Eval(Container.DataItem, "Date") %> </span> <br />
            <span class="guestBook-Text"> <%#DataBinder.Eval(Container.DataItem, "text") %> </span>
           <asp:LinkButton ID="LinkButtonDelete" CssClass="gastbok-remove" runat="server" CommandName="Delete">Delete<%#DataBinder.Eval(Container.DataItem, "id") %></asp:LinkButton>
        </div>                
    </ItemTemplate>
</asp:DataList>

我的链接按钮是数据列表中每个项目的删除按钮。

我的C#代码给了我错误:

protected void guestBookDataList_DeleteCommand(
    object source, DataListCommandEventArgs e)
{
    int id = Convert.ToInt32(guestBookDataList.DataKeys[e.Item.ItemIndex]);
    db.deleteGeustBookLog(id); //calls the sql command
    bindList();
}

基本上,我只需要从数据库中检索留言簿ID,这样我就可以删除它。

我尝试了很多不同的方法,并在谷歌上搜索了一下,但我无法让它发挥作用。所以现在我问你。谢谢你抽出时间。

c#数据列表删除特定行

将CommandArgument添加到具有其ID的LinkButton。然后在删除代码中查找e.CommandArguments,并传递该值。

<asp:LinkButton id="LinkButton2" 
       Text="Delete"
       CommandName="Delete" 
       CommandArgument='<%#DataBinder.Eval(Container.DataItem, "id") %>' 
       OnCommand="DeleteGuestBookEntry" 
       Runat="server"/>

你也可以给它一个commandName,比如"DeleteGuestBookEntry"之类的。

  void DeleteGuestBookEntry(Object sender, CommandEventArgs e) 
  {
     int id = Convert.ToInt32(e.CommandArgument);
     db.deleteGeustBookLog(id); //calls the sql command
     bindList();
  }

我总是会检查以确保您的ID不是空的,是数字的,等等,并添加一些错误处理,但这是最糟糕的方法。:)

您应该设置"datakeynames"属性

 <asp:DataList ID="guestBookDataList" runat="server" ondeletecommand="guestBookDataList_DeleteCommand" datakeynames="id">