2013-05-13 162 views
1

我想從GridView中獲取值並將其保存爲Session變量。從GridView獲取值

我知道列名,並且在GridView中只有一個值。選擇它並保存爲Session變量的最佳方法是什麼?

列名稱是CustomerID,其值始終爲int。

+0

什麼類型的列是?一個'BoundField'? – Magnus 2013-05-13 16:22:22

+0

看看這個[答](http://stackoverflow.com/a/625303/122005) – chridam 2013-05-13 16:23:45

+0

網格可以有很多行 - 你知道行號嗎? – 2013-05-13 16:24:08

回答

2

如果在一列和一行GridView,你可以在下面嘗試。

Session["MySessionValue"]= GridView1.Rows[0].Cells[0].Text; 

但是如果GridView中沒有記錄,通過索引訪問時可能會拋出異常。所以最好還是檢查GridView1.Rows.Count第一,並獲得價值

+0

在頁面加載時寫入該代碼是否正確? – joshuahornby10 2013-05-13 17:38:51

+0

你在哪裏綁定數據?以及你想要這個值的地方? – Damith 2013-05-13 17:40:32

+0

我之所以問這個問題,是因爲它似乎沒有保存任何東西。我是否應該等待頁面加載以調用代碼?我只想將它保存到會話中,然後在用戶點擊的下一頁上使用它。 – joshuahornby10 2013-05-13 17:42:07

1

您可以設置GridView的一個DataKey客戶ID,並選擇由:

int ID = Convert.ToInt32(GridView1.DataKeys[indx].Value);

indx是行指數的GridView ..

+0

我有一個錯誤,說索引超出範圍。 GridView中只有一行,並嘗試了0和1,仍然得到相同的錯誤。 – joshuahornby10 2013-05-13 16:31:40

+0

據我所知,列名有沒有辦法選擇這個?感謝您一直以來的幫助。 – joshuahornby10 2013-05-13 16:36:25

+0

什麼是您的功能選擇一行? – mehdi 2013-05-13 17:07:56

1

這不是做這一個適當的方式,你更好的硬編碼Damith的答案的cellindex但反正稍長版本

if (GridView1.Rows.Count > 0) 
{ 
    int indexofcolumn = 0; 
    foreach (DataControlField column in GridView1.Columns) 
    { 
     if (column.HeaderText == "CustomerID") break; 
     indexofcolumn++; 
    } 
    Session["CustomerID"] = GridView1.Rows[0].Cells[indexofcolumn].Text; 
}