保持gridview列索引的原始顺序
本文关键字:原始 顺序 索引 gridview 保持 | 更新日期: 2023-09-27 18:05:46
我有一个具有以下功能的动态gridview:
-
你可以使用复选框来选择哪些列是可见的。实现方法如下:
if (!chkTBDataRdo.Checked) grd.Columns[11].Visible = false; else grd.Columns[11].Visible = true;
-
你可以拖放标签来选择列的显示顺序。
if (hColumnList.Value != "") { string[] ordine = hColumnList.Value.Split(','); for (int i = 0; i < ordine.Length; i++) { var columnToMove = grd.Columns[Convert.ToInt32(ordine[i])]; grd.Columns.RemoveAt(Convert.ToInt32(ordine[i])); grd.Columns.Insert(i, columnToMove); } }
hColumnList
是一个隐藏字段,用于保持您设置的字段顺序。一切都工作得很好,但是当您执行搜索并重新排序网格时,用于执行RemoveAt
和Insert
的索引不再与原始索引匹配,并且由于不匹配,随后的搜索失败。
每次移动列之前,我都尝试重建网格,像这样:
grd.DataSource = null; //I tried with the original DataSource aswell.
grd.DataBind();
我还尝试将原始网格存储在会话变量中,如下所示:
Session["grd_Orig"] = grd;
但到目前为止,这些都不起作用:网格总是在第二次重新排序时中断,看起来它没有重建其原始索引。还有别的办法吗?数据来自MSSQL数据库,我不允许使用任何第三方组件。
我通过将ViewStateMode="Disabled"
属性添加到gridview来解决这个问题。