多语言展示
当前在线:749今日阅读:2今日分享:31

C1 FlexGrid for WinForms指定区域数据进行排序

在某些特殊情况下,用户需要对C1FlexGrid for WinForms中的数据进行一些特殊的排序操作,比如:只对指定区域的单元格数据进行排序,C1FlexGrid虽然没有内置这样的功能,不过我们可以通过自定义排序来实现该需求
工具/原料
1

ComponentOne

2

FlexGrid for WinForms

方法/步骤
1

在Form中添加一个按钮和C1FlexGrid控件,并为按钮添加Click事件,添加以下逻辑

2

得到C1Flexgrid中选中的单元格区域C1.Win.C1FlexGrid.CellRange cr = this.c1FlexGrid1.Selection;

3

创建一个临时的C1Flexgrid对象var fg = new C1.Win.C1FlexGrid.C1FlexGrid()

4

根据选中单元格的范围,为临时的C1Flexgrid指定行列数fg.Cols.Count = cr.c2 - cr.c1 + 1;    fg.Cols.Fixed = 0;    fg.Rows.Count = cr.r2 - cr.r1 + 1;    fg.Rows.Fixed = 0;

5

给临时C1Flexgrid单元格赋值for (int i = cr.r1; i <= cr.r2; i++)    {        for (int j = cr.c1; j <= cr.c2; j++)        {            fg[_row, _col] = this.c1FlexGrid1[i, j];            _col += 1;        }        _row += 1;        _col = 0;    }

6

对临时C1Flexgrid进行排序fg.Sort(C1.Win.C1FlexGrid.SortFlags.Ascending, 0)

7

将临时C1Flexgrid中的值设置给原始的C1Flexgridfor (int i = cr.r1; i <= cr.r2; i++)    {        for (int j = cr.c1; j <= cr.c2; j++)        {            this.c1FlexGrid1[i, j] = fg[_row, _col];            _col += 1;        }        _row += 1;        _col = 0;    }

推荐信息