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();
}
}
}
@@ -256,18 +256,11 @@ namespace Lskj.Control.Model
ToolStripMenuItem item = sender as ToolStripMenuItem;
DXMenuItem items = sender as DXMenuItem;
GridRightMenuModel model = item == null ? items.Tag as GridRightMenuModel : item.Tag as GridRightMenuModel;
if (!string.IsNullOrEmpty(model.UnionZTid))
{
string condition = string.Format("where ShowName ='{0}'", ERPInfo.Instance.AccountBook);
DataTable dt = MainImpl.GetLedgerList(condition);
DataRow RT = BaseImpl.GetDataRowResult($"select * from p_sydbGroupTab where ID={model.UnionZTid}");
AccountItem = dt.Rows[0];
ToDBatching(RT, AccountItem);
}
DataRow[] rowArray = GetSelectedRows();
GridRightMenuModel model = item == null ? items.Tag as GridRightMenuModel : item.Tag as GridRightMenuModel;
if (!model.Mergeexec && !model.MoreClick && rowArray.Length > 1)
{
MessageUtil.Show(string.Format(ResourceKeys.ExecRightMenuOnlyOne, model.MenuName));
@@ -279,7 +272,15 @@ namespace Lskj.Control.Model
MessageUtil.Show(ResourceKeys.SelectRowIsNull);
return;
}
if (!string.IsNullOrEmpty(model.UnionZTid))
{
string UnionZTid = ReplaceHelper.ReplaceRowParam(rowArray[0], model.UnionZTid);
string condition = string.Format("where ShowName ='{0}'", ERPInfo.Instance.AccountBook);
DataTable dt = MainImpl.GetLedgerList(condition);
DataRow RT = BaseImpl.GetDataRowResult($"select * from p_sydbGroupTab where ID={UnionZTid}");
AccountItem = dt.Rows[0];
ToDBatching(RT, AccountItem);
}
try
{
this.MenuStripClickBefore(item, model);