1. 程式人生 > >infragistics's ultragrid 控制元件顯示列與實際列的關係

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();
                }