infragistics's ultragrid 控制元件顯示列與實際列的關係
阿新 • • 發佈:2018-12-24
彈出列選擇器視窗:
ultraGrid1.ShowColumnChooser();
通過列選擇器,可以使某些列不可見。
如果隱藏了某些列,同時又拖拽改變了列順序,比如原來是 1 2 3 4
現在是 3 1
對於某一行,想按照現在的順序依次輸出列值,思路是:先用一個Dictionary<int,int>存 顯示列與實際列,
程式碼:
private void GetSortedDictionary(ref Dictionary<int, int> di,UltraGrid ug) { Dictionary<int, int> di = new Dictionary<int, int>(); for (int ii = 0; ii < ug.DisplayLayout.Bands[0].Columns.Count; ii++) { if (ug.DisplayLayout.Bands[0].Columns[ii].Hidden == true) continue; di.Add(ug.DisplayLayout.Bands[0].Columns[ii].Header.VisiblePosition, ii); } }
然後對 此Dictionary 按 key 排序
var sortedDict = (from entry in di orderby entry.Key ascending select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);
對於某行,就可以:
string sRowText = ""; foreach (var pair in sortedDict) { sRowText = sRowText + row.Cells[pair.Value].Value.ToString(); }