从gridviewrowcommand中的commandparameter获取实体对象
本文关键字:实体 对象 获取 commandparameter gridviewrowcommand 中的 | 更新日期: 2023-09-27 18:12:09
我正在使用绑定到List<Customer>
的GridView
。当RowCommand
被某些按钮触发时,我希望能够从e.CommandArgument
检索当前行的Customer
对象,如下所示:
protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
Customer customer = (Customer)e.CommandArgument;
DoSomething(customer);
}
如何在事件被触发之前将Customer
对象分配给CommandArgument
?
我不确定你是否真的可以在CommandArgument中存储一个复杂的对象,因为它似乎只接受字符串或数字值。
一些我从未真正付诸实践的东西,是将您的对象转换为Json字符串并将其用作命令参数。
例如,使用Newtonsoft。Json和一个名为FooBar
的虚拟对象
<asp:Button ID="btnOne" runat="server"
CommandName="Click"
CommandArgument='<%#Newtonsoft.Json.JsonConvert.SerializeObject((FooBar)Container.DataItem) %>'
Text="Click" />
当你处理gridviewrowcommand点击事件时,你可以从commandparameter中反序列化对象
FooBar fooBar = Newtonsoft.Json.JsonConvert.DeserializeObject<FooBar>(e.CommandArgument.ToString());
现在这是工作,但是否是最好的解决方案,我不确定。