繁体   English   中英

在gridview中删除列并对其重新排序,并在回发中持久化

[英]Remove and reorder columns in gridview and persisting it on postbacks

我有一个页面, 使用GridView可以显示记录。 现在,我允许用户通过更改列的顺序或添加从预定义的列列表中删除列来自定义GridView视图。 OnPagePrerender事件我正在从GridView中删除所有单元格,并按照用户选择的顺序添加单元格。 它的工作正常,但当发生PostBack时,它将引发异常,即

无法加载ViewState。 等等

因为现在这些单元格与保存在ViewState的单元格不同。

我想要保留在PostBack上对GridView所做的这些更改吗?

你要保存GridView中(或数据记录) VIEWSTATE并重新加载Gridview 只从 VIEWSTATE。

因此,换句话说,仅当数据需要更改时才查询数据库,但是您必须以gridview可以显示数据 recordset的方式来构造recordset ,即数据加载的方式 (即动态SQL),并且列顺序为需要。

然后将recordset保存到viewstate变量中,并在进行回发时在gridview引用它。

我对行而不是列做了类似的事情,是的,当在该深度gridview上操纵gridview控件时,您将不再依赖默认datasourcedatasourceID gridview

为此,您必须创建一个新的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM