diff --git a/插件库/Lskj.Control/GridControlEx.cs b/插件库/Lskj.Control/GridControlEx.cs index 9566086..2487c52 100644 --- a/插件库/Lskj.Control/GridControlEx.cs +++ b/插件库/Lskj.Control/GridControlEx.cs @@ -7030,7 +7030,7 @@ namespace Lskj.Control bandedGridControlEx.BandedView.Columns.Clear(); // 保留其他非聚合列 - List normalColumns = ColumnList.Where(o => o.IsCustomGroupField == 0).ToList(); + List 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() - .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(); - } - - } -} \ No newline at end of file + \ No newline at end of file diff --git a/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs b/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs index d535a85..e3163e4 100644 --- a/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs +++ b/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs @@ -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);