我有一个页面,其中 GridView 用于显示记录。现在,我允许用户通过更改列的顺序或添加从预定义列列表中删除列来自定义 GridView 视图。 OnPagePrerender
事件我正在从GridView中删除所有单元格,并添加具有用户选择顺序的单元格。它的工作正常,但是当PostBack
发生时,它会抛出异常,即
无法加载ViewState。等。
因为现在单元格与ViewState
中保存的单元格不同。
我想要的是在PostBack
上保留我对 GridView 所做的这些更改吗?
答案 0 :(得分:0)
您必须将GridView
(或您的数据记录集)保存在VIEWSTATE
中,并仅从 VIEWSTATE重新加载Gridview
。
换句话说,只有在数据必须更改时才查询数据库,但您必须以recordset
可以显示的方式构建gridview
,的方式数据已加载,即动态SQL,根据需要使用您的列顺序。
然后将recordset
保存到viewstate
变量中,并在发回作时在gridview
中引用它。
我做了类似于行而不是列的操作,是的,当datasource
控件在深层操作时,你不能再依赖默认的datasourceID
或gridview
了
答案 1 :(得分: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