簡體   English   中英

如何動態重新排序gridview中的列

[英]How to reorder columns in gridview dynamically

類似的問題可能存在,但它們似乎都沒有幫助。 所以我會嘗試解釋一個更具體的案例,看看是否有人可以幫助我:)

這是事情,我有一個帶有templatefields的gridview,我想讓用戶指定這些列的顯示順序。 因此,用戶創建視圖並決定要顯示哪個列的第一個,第二個等等。

基本上,我需要在網格加載數據后更改列的順序。

聽起來很簡單吧? 嗯,顯然不是。 至少我還沒有達到目的。

一些注意事項: - 當然我將AutogenerateColumns設置為false。 - 更改sql select列順序因前一項而無效。 - 我不想通過代碼生成列。

有任何想法嗎?

您可以在代碼隱藏中修改Gridview的Columns集合。 因此,執行此操作的一種方法是從集合中的當前位置移除列,然后將其重新插入新位置。

例如,如果要將第二列移動到第一列,則可以執行以下操作:

var columnToMove = myGridView.Columns[1];
myGridView.Columns.RemoveAt(1);
myGridView.Columns.Insert(0, columnToMove);

如果您需要隨機移動它們,那么您可能希望嘗試克隆字段集合,清除GridView中的集合,然后按照您希望它們的順序重新插入它們。

var columns = myGridView.Columns.CloneFields();
myGridView.Columns.Clear();
myGridView.Columns.Add(columns[2]);
myGridView.Columns.Add(columns[0]);
etc..

我不是100%確定這一切是否會在綁定到數據之后起作用,所以除非有理由不這樣做,否則我會在Page_Init或綁定之前的某個地方進行。

我知道這是一個非常古老的問題,但建議的答案並沒有完全解決問題。

刪除/添加動態列后,GridView的ViewState將失敗。

如果您需要綁定任何事件,如OnRowCommand和OnRowUpdating,則不會觸發此類事件。

編輯:

如果您需要答案,請查看此功能。

Protected Overrides Function CreateColumns(dataSource As PagedDataSource, useDataSource As Boolean) As ICollection

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM