2013-05-03 40 views
2

我使用的是GridView,它綁定到List<Customer>從GridView中的CommandArgument獲取實體對象RowCommand

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

如何分配Customer對象CommandArgument觸發事件之前:當RowCommand是由一些按鈕,我希望能夠從e.CommandArgument檢索當前行的Customer對象,像這樣被炒魷魚嗎?

回答

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()); 

反序列化對象現在這工作,但是否是最好的解決方案,我不知道。

相關問題