2017-08-01 27 views
2

我有一個頁面,其中GridView用於顯示記錄。現在我允許用戶通過更改列的順序或添加從預定義的列列刪除列來自定義GridView視圖。 OnPagePrerender事件我從GridView中刪除所有單元格,並按照用戶選擇的順序添加單元格。它的工作正常,但當發生PostBack然後它拋出一個例外,即在gridview中刪除並重新排列列並在回發中保留它

未能加載ViewState。等等。

因爲現在的單元格與ViewState中保存的不一樣。

我想要的是堅持我對GridViewPostBack所做的這些更改嗎?

+0

你能保存gridview的狀態嗎? – Umair

回答

0

你必須保存在VIEWSTATEGridView(或數據記錄),只有從 ViewState中重新加載Gridview

所以,換句話說,只有查詢時,數據必須更改數據庫,但你必須結構recordset的方式,在gridview可以顯示它,數據加載的方式,即動態SQL,根據需要列出您的訂單。

然後將recordset保存到viewstate變量中,並在發送回發時在您的gridview中引用它。

我做了一些類似的行,而不是列,是的你不能依靠默認的datasourcedatasourceIDgridview控制在這個深層次操縱。

+0

我做到了這一點,但我有大量的數據,如果我保持它在viewstate我會增加頁面加載。我在ViewState中存儲了集合,並在PreLoad頁面事件中重新綁定了GridView的gridview,但問題是加載時間會增加。 –

+0

對不起,但這是我知道的唯一方法。考慮從XML,Json或更快的東西中獲取數據。 – Fandango68

+0

好的感謝您的建議 –

0

爲此,您必須創建Gridview列的新訂單。

首先複製您的列。第二次重新排列你的列。

var columns = GridView1.Columns.CloneFields(); // makes a copy of gridview columns 
GridView1.Columns.Clear(); // remove all the columns 

// now make any order for your gridview columns 
GridView1.Columns.Add(columns[3]); // e.g. now your column 4 is placed at first position 
GridView1.Columns.Add(columns[0]); // here column 1 is placed at second position 
+0

我試過這個工作,但是當我做回發時,數據從單元格中刪除。我將添加所有列,只有那些被用戶選擇的列 –

相關問題