在开发包的CustomMerge演示程序的基础上写了一个demo,见附件
其实就是重写了在合并单元格,对数据进行对比的时候,先对数据进行Trim和ToLower的操作
核心代码如下
- public class FlexSchedule : C1.Win.C1FlexGrid.C1FlexGrid
- {
- override public CellRange GetMergedRange(int row, int col, bool clip)
- {
- // create basic cell range
- CellRange rg = GetCellRange(row, col);
- // expand left/right
- int i;
- int cnt = Cols.Count;
- int ifx = Cols.Fixed;
- for (i = rg.c1; i < cnt-1; i++)
- {
- if (GetDataDisplay(rg.r1, i).Trim().ToLower() != GetDataDisplay(rg.r1, i+1).Trim().ToLower()) break;
- rg.c2 = i+1;
- }
- for (i = rg.c1; i > ifx; i--)
- {
- if (GetDataDisplay(rg.r1, i).Trim().ToLower() != GetDataDisplay(rg.r1, i-1).Trim().ToLower()) break;
- rg.c1 = i-1;
- }
- // expand up/down
- cnt = Rows.Count;
- ifx = Rows.Fixed;
- for (i = rg.r1; i < cnt-1; i++)
- {
- if (GetDataDisplay(i, rg.c1).Trim().ToLower() != GetDataDisplay(i+1, rg.c1).Trim().ToLower()) break;
- rg.r2 = i+1;
- }
- for (i = rg.r1; i > ifx; i--)
- {
- if (GetDataDisplay(i, rg.c1).Trim().ToLower() != GetDataDisplay(i-1, rg.c1).Trim().ToLower()) break;
- rg.r1 = i-1;
- }
- // done
- return rg;
- }
- }
复制代码
|