我有一个带有客户列表的转发器。每个客户都有一个删除链接按钮。作为链接按钮的一部分,我想按如下方式将客户对象传递给命令参数(其中 Container.DataItem 是客户对象):
<asp:LinkButton ID="lnkDelete"
OnClientClick="return confirmDelete();"
OnClick="Customer_OnDelete"
CommandArgument="<%# Container.DataItem %>"
CommandName="Delete"
runat="server"></asp:LinkButton>
当我这样做时:
var button = (((LinkButton) sender));
var customer= button.CommandArgument;
button.CommandArguement 是一个字符串。我需要所有的对象属性,因为我们正在使用 Nhibernate,所以一切都需要设置,删除记录的 ID 是不够的。我在网上看到有关将逗号分隔的值列表传递到命令参数的示例,但我想避免这样做。这可能吗?
有什么想法吗? 谢谢
最佳答案
在我看来,这种情况下最好的方法是:
- 从
CommandArgument
获取ID - 通过 ID 获取客户
- 删除客户实体
使用 Repeater
事件 OnItemCommand
。此事件包含 RepeaterCommandEventArgs
。您无法通过这种方式获取 CommandArgument
:
protected void myRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
int customerID= Convert.ToInt32(e.CommandArgument.ToString());
}
在您的 asp:LinkButton
标签中使用:
CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ID") %>'
关于c# - 在转发器链接按钮中将对象作为 CommandArguement 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12493507/