SVN-Revision: r810
This commit is contained in:
tdx
2025-06-29 02:55:51 +00:00
parent 30f66dfad4
commit 99460300ed
2 changed files with 28 additions and 43 deletions
+16 -32
View File
@@ -7030,7 +7030,7 @@ namespace Lskj.Control
bandedGridControlEx.BandedView.Columns.Clear();
// 保留其他非聚合列
List<GridColumnModel> normalColumns = ColumnList.Where(o => o.IsCustomGroupField == 0).ToList();
List<GridColumnModel> normalColumns = ColumnList.Where(o => o.IsCustomGroupField == 0|| o.IsCustomGroupField == 3).ToList();
// 创建正常列的Band
GridBand normalBand = new GridBand() { Caption = "基本信息" };
@@ -7171,15 +7171,25 @@ namespace Lskj.Control
foreach (var col in normalCols.Where(c => exist.Contains(c.FieldName)))
newRow[col.FieldName] = first[col.FieldName];
// 求和列
// ─── 求和列:只用第 1 个 Header 小组的行来累加 ───
foreach (var col in sumColumns.Where(c => exist.Contains(c.FieldName)))
{
var sum = grp
.Where(r => r[col.FieldName] != DBNull.Value)
.Sum(r => Convert.ToDecimal(r[col.FieldName]));
// ① 取当前分组里第一个 Header 值
var firstHeader = grp
.Select(r => r[headerCol.FieldName])
.FirstOrDefault();
// ② 过滤到只剩这个 Header 的行后求和
decimal sum = grp
.Where(r => Equals(r[headerCol.FieldName], firstHeader)
&& r[col.FieldName] != DBNull.Value)
.Sum(r => Convert.ToDecimal(r[col.FieldName]));
// ③ 写入结果行
newRow[col.FieldName] = sum;
}
// 动态列
var lookup = grp.ToLookup(r => r[headerCol.FieldName]?.ToString());
foreach (string h in headers)
@@ -8716,30 +8726,4 @@ namespace Lskj.Control
{
// 只处理列名可解析成日期的列
if (!DateTime.TryParse(col.FieldName, out _))
continue;
// 取 “Sum” 合计
var sumItem = col.Summary
.OfType<GridColumnSummaryItem>()
.FirstOrDefault(s => s.SummaryType == SummaryItemType.Sum);
bool needRed = false;
if (sumItem?.SummaryValue != null &&
decimal.TryParse(sumItem.SummaryValue.ToString(), out var colSum) &&
jhrowitem.Table.Columns.Contains(col.FieldName) &&
decimal.TryParse(jhrowitem[col.FieldName].ToString(), out var planVal))
{
needRed = (colSum != planVal);
}
// 只改表头文字颜色
col.AppearanceHeader.ForeColor = needRed ? Color.Red : Color.Black;
col.AppearanceHeader.Options.UseForeColor = true;
}
// 立刻刷新表头
gridView.Invalidate();
}
}
}