infragistics's ultragrid 控件显示列与实际列的关系
弹出列选择器窗口:
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(); }