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,这样我就可以删除它。
我尝试了很多不同的方法,并在谷歌上搜索了一下,但我无法让它发挥作用。所以现在我问你。谢谢你抽出时间。
将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">