2013-05-03 2 views
2

Я использую GridView, который связан с List<Customer>. Когда RowCommand вызывается какой-то кнопки, я хочу, чтобы иметь возможность получить Customer объект текущей строки в с e.CommandArgument, как так:Получить объект объекта из CommandArgument в GridView RowCommand

protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    Customer customer = (Customer)e.CommandArgument; 
    DoSomething(customer); 
} 

Как назначить Customer объект CommandArgument до события увольняют?

ответ

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 щелчка, вы можете Deserialize объект из CommandArgument

FooBar fooBar = Newtonsoft.Json.JsonConvert.DeserializeObject<FooBar>(e.CommandArgument.ToString()); 

сейчас это работает, но является ли это лучшим решением, я не уверен.

Смежные вопросы