C#发开,dataGridView1一中有一张数据表,根据“业务员”列将相同将相同的值的行按中文升序放在一起形成数据组,且每两组数据组不同的值之间通过空白行加首行值隔断的所有C#代码
时间: 2024-11-12 13:34:02 浏览: 17
C#中DataGridView动态添加行及添加列的方法
5星 · 资源好评率100%
要在 C# 中使用 DataGridView 将数据按照特定条件分组并添加间隔行,你可以使用 LINQ 查询和循环来实现这一功能。下面是一个示例,假设你有一个名为 dataGridView1 的 DataGridView,并且已经填充了一张包含 "业务员" 列的数据表:
```csharp
// 获取 DataGridView 表格中的所有行
var rows = dataGridView1.Rows.Cast<DataGridViewRow>();
// 提取 "业务员" 列的值,存储在一个 Dictionary 中便于分组
var groupedData = rows.Select(r => (BusinessMan: r.Cells["业务员"].Value)).ToDictionary(kvp => kvp.BusinessMan, kvp => kvp);
// 按照中文排序键值对
var sortedGroups = groupedData.OrderBy(pair => pair.Key);
// 用于存放结果的新表格
var resultRows = new List<DataGridViewRow>();
// 创建一个新行作为第一个数据组的开始
var groupStartRow = new DataGridViewRow();
groupStartRow.Cells.Add(new DataGridViewTextBoxCell() { Value = "" }); // 添加空白单元格
resultRows.Add(groupStartRow);
foreach (var group in sortedGroups)
{
// 构建当前数据组的行
var dataGroupRows = new List<DataGridViewRow>();
foreach (var row in group.Value)
{
var newRow = dataGridView1.NewRow(); // 创建新行复制现有行的数据
newRow.CloneCells(row);
dataGroupRows.Add(newRow);
}
// 把当前数据组的所有行添加到结果中
resultRows.AddRange(dataGroupRows);
// 添加间隔行(除了最后一个数据组)
if (dataGroupRows.Count > 0)
{
groupStartRow = new DataGridViewRow();
groupStartRow.Cells.Add(new DataGridViewTextBoxCell() { Value = "" });
resultRows.Add(groupStartRow);
}
}
// 将结果行添加回 DataGridView
dataGridView1.Rows.Clear();
dataGridView1.Rows.AddRange(resultRows.ToArray());
```
这段代码首先从 DataGridView 中提取 "业务员" 列的数据,然后按中文字符排序。接着,它创建新的行,并在每个数据组之间插入空白行。最后,结果行被添加回 DataGridView。
注意,这个例子假定你是基于字符串比较 "业务员" 列的值。如果需要自定义排序规则,可以在 `OrderBy` 里指定相应的比较逻辑。
阅读全文