我正在使用绑定到GridView
的{{1}}。当某个按钮触发List<Customer>
时,我希望能够从RowCommand
中检索当前行的Customer
对象,如下所示:
e.CommandArgument
如何在事件触发前将protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
Customer customer = (Customer)e.CommandArgument;
DoSomething(customer);
}
对象分配给Customer
?
答案 0 :(得分:2)
我不确定您是否可以在CommandArgument中存储复杂对象,因为它似乎只接受字符串或数值。
我从未真正付诸实践的东西是将对象转换为Json字符串并将其用作命令参数。
例如,使用Newtonsoft.Json和名为FooBar
<asp:Button ID="btnOne" runat="server"
CommandName="Click"
CommandArgument='<%#Newtonsoft.Json.JsonConvert.SerializeObject((FooBar)Container.DataItem) %>'
Text="Click" />
然后,当您处理GridView RowCommand单击事件时,可以从CommandArgument
反序列化该对象FooBar fooBar = Newtonsoft.Json.JsonConvert.DeserializeObject<FooBar>(e.CommandArgument.ToString());
现在这有效,但不管它是否是最佳解决方案,我不确定。