2013-01-06 82 views
1

我有什麼:訪問GridView的ViewState中

我有沒有分頁一個GridView。在包含頁面的Page_Load處理程序中,我從表存儲讀取用戶特定的值並將它們存儲在集合中,以便ObjectDataSource的SelectMethod可以獲取它們。

我想要什麼:

當用戶上傳一個頁面上的一些新的數據在GridView是我想要的GridView控件還顯示新數據舊,而無需再次查詢存儲。

有用的東西:

在Page_Load處理程序中的IsPostBack有助於避免查詢時,該數據仍然在ViewState。在用戶點擊上傳按鈕後,他仍然可以看到舊數據,這要歸功於我猜測的GridView的ViewState。

我嘗試:

我試圖從GridView中導出,讓我自己的用戶控制,以訪問返回一個StateBag的ViewState屬性,但它無法找到顯示在它的用戶數據。它只顯示DataSourceID,_!ItemCount等內容。

我的問題:

如何從一個GridView訪問的ViewState以檢索像代碼背後的列值或DataKeyName值數據。

附加信息:

的問題的答案does gridview save data in viewstate?指出,GridView控件在ViewState中保存數據。

回答

1

你絕對不想訪問GridView的視圖狀態。這是該控件的內部實現細節,並可隨時更改。

設置好新數據後,你需要做的就是在GridView上調用DataBind(),控件將顯示更新後的數據。

+0

@ user764754你可以發表一些你做過的事嗎?但它聽起來像你只需要再次綁定它。 –

+0

如果我只設置新數據,GridView將不會顯示任何其他內容。如果我將DataBind新數據從ViewState的舊數據丟失。由於我不想在發生PostBack時創建新的查詢,因此我只在代碼後面有新的數據,而舊的數據隱藏在GridView的ViewState中(從最初的Page_Load中)。我明天會發布代碼,謝謝。 – user764754

+0

您可能沒有訪問GridView的ViewState。我現在的解決方案是將查詢的數據存儲在頁面ViewState中。此ViewState用於在回發期間獲取舊數據。舊數據被修改,然後DataBind()被調用並且頁面的ViewState被相應地更新。我還在GridView上設置了EnableViewState =「False」,以避免將數據存儲在頁面的ViewState和GridView的ViewState中。此解決方法有效。我不認爲我現在必須發佈我的舊代碼;) – user764754