WPF的C1FlexGrid控件合并相同列

<c1:C1FlexGrid Name="CfgRiskReviewItem" Style="{StaticResource Green}" ItemsSource="{Binding RiskReviewList,Mode=TwoWay}" SelectedItem="{Binding CurrentRiskReviewItem,Mode=TwoWay}"

LoadedRows="FlexGrid_LoadedRiskReviewRows_RowIndex" PreviewKeyDown="c1FlexGrid_PreviewKeyDown" MinRowHeight="50" Margin="5,5,5,0" AllowMerging="Cells"

表格增加AllowMerging="Cells"属性

cs代码初始化方法里面写上

CfgRiskReviewItem.CellFactory = new FlexGridShowCellFactory();

CfgRiskReviewItem.MergeManager = new SummaryProjectMergeManager();

private class SummaryProjectMergeManager : IMergeManager

{

/// <summary>

/// 获取合并块

/// </summary>

/// <param name="grid"></param>

/// <param name="cellType"></param>

/// <param name="rg"></param>

/// <returns></returns>

public CellRange GetMergedRange(C1FlexGrid grid, CellType cellType, CellRange rg)

{

var colName = grid.Columnsrg.Column.ColumnName;

if (cellType != CellType.Cell)

{

return rg;

}

switch (colName)

{

case "RiskName":

return SetRg(grid, rg, new List<string>() { colName });

// case "item2":

// return SetGeCg(grid, rg, new List<string>() { colName });

default:

return rg;

}

}

/// <summary>

/// 设置合并块

/// </summary>

/// <param name="grid"></param>

/// <param name="rg"></param>

/// <param name="depColList">合并依据列</param>

/// <returns></returns>

private CellRange SetRg(C1FlexGrid grid, CellRange rg, List<string> depColList)

{

for (int i = rg.Row; i < grid.Rows.Count - 1; i++)

{

bool isSame = true;

foreach (var depCol in depColList)

{

if (GetDataDisplay(grid, i, grid.ColumnsdepCol.Index) != GetDataDisplay(grid, i + 1, grid.ColumnsdepCol.Index))

{

isSame = false;

break;

}

}

if (!isSame)

{

break;

}

rg.Row2 = i + 1;

}

for (int i = rg.Row; i > 0; i--)

{

bool isSame = true;

foreach (var depCol in depColList)

{

if (GetDataDisplay(grid, i, grid.ColumnsdepCol.Index) != GetDataDisplay(grid, i - 1, grid.ColumnsdepCol.Index))

{

isSame = false;

break;

}

}

if (!isSame)

{

break;

}

rg.Row = i - 1;

}

return rg;

}

private CellRange SetGeCg(C1FlexGrid grid, CellRange rg, List<string> depColList)

{

for (int i = rg.Row; i < grid.Rows.Count - 1; i++)

{

if (i == 6)

{

grid6, 6 = null;

grid6, 7 = null;

grid6, 8 = null;

grid.Rowsi.AllowMerging = true;

break;

}

}

return rg;

}

/// <summary>

/// 获取单元格显示值

/// </summary>

/// <param name="grid"></param>

/// <param name="r"></param>

/// <param name="c"></param>

/// <returns></returns>

private string GetDataDisplay(C1FlexGrid grid, int r, int c)

{

return (gridr, c ?? "").ToString();

}

}

效果

相关推荐
李高钢5 小时前
【WPF】从 Avalon 到 .NET 10:WPF 平台演进史与特性全览
.net·wpf
李高钢21 小时前
WPF MVVM Light 入门:从零到Hello World
c#·wpf
李高钢1 天前
WPF MVVM Light(三):RelayCommand 命令与 Messenger 消息
前端·c#·wpf
SamChan902 天前
FastAPI+Celery+Redis搭建企业级PDF翻译异步任务系统
redis·后端·python·pdf·wpf·fastapi
李高钢2 天前
C# WPF Prism 进阶(三):导航(Navigation)深入
开发语言·c#·wpf
李高钢3 天前
C# WPF 的 Prism 框架入门:核心概念与一个完整示例
开发语言·c#·wpf
SamChan903 天前
用Playwright端到端测试PDF翻译功能:Web自动化测试实战
前端·python·ai·pdf·wpf
Now喔3 天前
WPF动画
wpf
FuckPatience5 天前
WPF 给一个界面上的按钮应用同一种样式
wpf
Polevne6 天前
WPF\MAUI\Avalonia Dispatcher
wpf