在中继器链接按钮中将对象作为 CommandArgument 传递

Mik*_*keL 2 c# asp.net repeater linkbutton commandargument

我有一个带有客户列表的中继器。每个客户都有一个删除链接按钮。作为链接按钮的一部分,我想将 Customer 对象传递给 Command Arguement,如下所示(其中 Container.DataItem 是客户对象):

<asp:LinkButton  ID="lnkDelete" 
   OnClientClick="return confirmDelete();"  
   OnClick="Customer_OnDelete"  
   CommandArgument="<%# Container.DataItem  %>"  
   CommandName="Delete" 
   runat="server"></asp:LinkButton>
Run Code Online (Sandbox Code Playgroud)

当我这样做时:

    var button = (((LinkButton) sender));

    var customer=  button.CommandArgument;
Run Code Online (Sandbox Code Playgroud)

button.CommandArgument 是一个字符串。我需要所有的对象属性,因为我们使用 Nhibernate,所以需要设置所有内容,删除记录的 ID 是不够的。我在网上看到过关于将逗号分隔的值列表传递到命令论证中的示例,但希望避免这样做。这可能吗?

有任何想法吗?谢谢

小智 6

在我看来,这种情况的最佳方法是:

  • 从中获取 ID CommandArgument
  • 通过 ID 获取客户
  • 删除客户实体

使用Repeater事件OnItemCommand。此事件包含RepeaterCommandEventArgs. 你不能CommandArgument这样:

protected void myRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
   int customerID= Convert.ToInt32(e.CommandArgument.ToString());
}
Run Code Online (Sandbox Code Playgroud)

在您的asp:LinkButton标签使用:

CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ID") %>'
Run Code Online (Sandbox Code Playgroud)