2010-09-30 59 views
0

我在頁面上有一個空的GridView對象,我在運行時將其綁定到LINQ qry結果。 GridView有一個'Select'按鈕,它觸發SelectedIndexChanged事件,它在這個事件的內部,我想訪問所選行中的一個字段的數據。在動態生成的GridView中的SelectedIndexChanged事件期間訪問SelectedRow的屬性

到目前爲止,我只能找到一個辦法做到這一點,似乎不理想:

protected void GridView2_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    GridViewRow row = GridView2.SelectedRow; 
    string UserID = row.Cells[1].Text; 
    //Do stuff with the userID 
} 

因此,這只是直接訪問基於小區索引的小區數據的用戶ID恰好是在第二單元,所以它的工作原理,但後來下來。用戶ID可能不在同一列,看起來我最好是通過訪問單元格的頭部名稱或通過除單元格索引本身之外的任何方法來查找此單元格的值。

任何想法?

謝謝!

回答

0

試試這個


User user = (User)((DataRowView)row.DataBoundItem).Row; 
int userID = user.UserID; 

我假設你有一個類稱爲用戶,並且結合在DataGridView到可以列表

+0

GridView控件數據源是LINQ查詢的選擇到匿名類型。也許我不需要在選擇中使用匿名類型,但我可以嘗試另一種方式... – Elbelcho 2010-09-30 20:17:19

+0

嘗試var user =(User)((DataRowView)row.DataBoundItem).Row;那麼int userID = user.UserID; – 2010-09-30 21:17:32

0

我不知道很多關於asp.net,但在C#中的DataGridView你可以直接按列名索引列,即

string UserID = row.Cells["UserID"].Text; 

或類似的東西。也許值得嘗試一下。

+0

顯然,GridView的WebUI版本只接受單元的整數索引。 :( – Elbelcho 2010-09-30 20:14:06

0

您可以使用以下代碼檢索綁定到當前的對象SelectedRow

DataTable dt = (DataTable)<GridViewControl>.SelectedRow.DataItem 

(這裏我假定電網綁定了數據表。)

+1

請[編輯]並修復您的代碼塊。 – Will 2011-12-01 15:34:51