c#Datalist删除特定行。

时间:2012-02-14 22:53:11

标签: c#

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

错误是: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();
}

Basiclly我只需要从数据库中检索来宾记录ID,这样我就可以删除它。

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

2 个答案:

答案 0 :(得分:2)

将CommandArgument添加到LinkBut​​ton及其ID。然后在删除代码中,查找e.CommandArgument,然后传递该值。

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

你也可以给它一个像“DeleteGuestBookEntry”之类的命令。

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

我总是会检查以确保您的ID不为空,并且是数字等,并添加一些错误处理,但这是执行此操作的简单方法。 :)

答案 1 :(得分:0)

您应该设置“datakeynames”属性

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