From 20bf46bdd5fa2f4eab56e268e514e4d9c8fe6c6f Mon Sep 17 00:00:00 2001 From: cyf Date: Wed, 24 Jun 2026 02:03:46 +0000 Subject: [PATCH] SVN r1232 SVN-Revision: r1232 --- 插件库/Lskj.Control/BandedGridControlEx.cs | 27 +++++++++++++++++++--- 插件库/Lskj.Control/GridControlEx.cs | 27 +++++++++++++++++++--- 插件库/Lskj.Control/ModuleGridEx.cs | 4 ++-- 3 files changed, 50 insertions(+), 8 deletions(-) diff --git a/插件库/Lskj.Control/BandedGridControlEx.cs b/插件库/Lskj.Control/BandedGridControlEx.cs index 3cb9551..56bbc3e 100644 --- a/插件库/Lskj.Control/BandedGridControlEx.cs +++ b/插件库/Lskj.Control/BandedGridControlEx.cs @@ -187,6 +187,25 @@ namespace Lskj.Control } } + private string GetMergeGroupValue(GridColumnModel model, DataRow row) + { + if (model == null || row == null || string.IsNullOrEmpty(model.MergeGroup)) return string.Empty; + + string[] fields = model.MergeGroup.Trim(',').Split(','); + StringBuilder groupValue = new StringBuilder(); + foreach (string item in fields) + { + string fieldName = (item + "").Trim(); + if (string.IsNullOrEmpty(fieldName) || !row.Table.Columns.Contains(fieldName)) continue; + + groupValue.Append(fieldName); + groupValue.Append("="); + groupValue.Append(row[fieldName] + ""); + groupValue.Append("|"); + } + return groupValue.ToString(); + } + /// /// 说明:重写设置表格颜色 /// 创建人:王一帆 @@ -1187,16 +1206,17 @@ namespace Lskj.Control if (!string.IsNullOrEmpty(model.MergeGroup)) { - bool isMergrGroup = !string.IsNullOrEmpty(model.MergeGroup) && gridRow.Table.Columns.Contains(model.MergeGroup) && e.RowHandle != 0 ? (gridRow[model.MergeGroup] + "").Equals(BeforeGroupName) : false; + string currentGroupName = GetMergeGroupValue(model, gridRow); + bool isMergrGroup = !string.IsNullOrEmpty(currentGroupName) && e.RowHandle != 0 ? currentGroupName.Equals(BeforeGroupName) : false; if (model.CanMerge && BeforeClass == Convert.ToDecimal(e.FieldValue) && isMergrGroup) { BeforeClass = Convert.ToDecimal(e.FieldValue); - BeforeGroupName = !string.IsNullOrEmpty(model.MergeGroup) && gridRow.Table.Columns.Contains(model.MergeGroup) ? gridRow[model.MergeGroup] + "" : ""; + BeforeGroupName = currentGroupName; } else { BeforeClass = Convert.ToDecimal(e.FieldValue); - BeforeGroupName = !string.IsNullOrEmpty(model.MergeGroup) && gridRow.Table.Columns.Contains(model.MergeGroup) ? gridRow[model.MergeGroup] + "" : ""; + BeforeGroupName = currentGroupName; if (isSum || String.IsNullOrEmpty(model.SumCond)) customSum += Convert.ToDecimal(e.FieldValue); } } @@ -1278,6 +1298,7 @@ namespace Lskj.Control { e.TotalValue = customSum; BeforeClass = 0; + BeforeGroupName = ""; } break; } diff --git a/插件库/Lskj.Control/GridControlEx.cs b/插件库/Lskj.Control/GridControlEx.cs index a207ba2..947b036 100644 --- a/插件库/Lskj.Control/GridControlEx.cs +++ b/插件库/Lskj.Control/GridControlEx.cs @@ -761,6 +761,25 @@ namespace Lskj.Control } } + private string GetMergeGroupValue(GridColumnModel model, DataRow row) + { + if (model == null || row == null || string.IsNullOrEmpty(model.MergeGroup)) return string.Empty; + + string[] fields = model.MergeGroup.Trim(',').Split(','); + StringBuilder groupValue = new StringBuilder(); + foreach (string item in fields) + { + string fieldName = (item + "").Trim(); + if (string.IsNullOrEmpty(fieldName) || !row.Table.Columns.Contains(fieldName)) continue; + + groupValue.Append(fieldName); + groupValue.Append("="); + groupValue.Append(row[fieldName] + ""); + groupValue.Append("|"); + } + return groupValue.ToString(); + } + /// /// 说明:表格列求和触发事件 @@ -837,16 +856,18 @@ namespace Lskj.Control { if (!string.IsNullOrEmpty(model.MergeGroup)) { - bool isMergrGroup = !string.IsNullOrEmpty(model.MergeGroup) && gridRow.Table.Columns.Contains(model.MergeGroup) && e.RowHandle != 0 ? (gridRow[model.MergeGroup] + "").Equals(BeforeGroupName) : false; + string currentGroupName = GetMergeGroupValue(model, gridRow); + bool isMergrGroup = !string.IsNullOrEmpty(currentGroupName) && e.RowHandle != 0 ? currentGroupName.Equals(BeforeGroupName) : false; + if (model.CanMerge && BeforeClass == Convert.ToDecimal(e.FieldValue) && isMergrGroup) { BeforeClass = Convert.ToDecimal(e.FieldValue); - BeforeGroupName = !string.IsNullOrEmpty(model.MergeGroup) && gridRow.Table.Columns.Contains(model.MergeGroup) ? gridRow[model.MergeGroup] + "" : ""; + BeforeGroupName = currentGroupName; } else { BeforeClass = Convert.ToDecimal(e.FieldValue); - BeforeGroupName = !string.IsNullOrEmpty(model.MergeGroup) && gridRow.Table.Columns.Contains(model.MergeGroup) ? gridRow[model.MergeGroup] + "" : ""; + BeforeGroupName = currentGroupName; if (isSum || String.IsNullOrEmpty(model.SumCond)) customSum += Convert.ToDecimal(e.FieldValue); } } diff --git a/插件库/Lskj.Control/ModuleGridEx.cs b/插件库/Lskj.Control/ModuleGridEx.cs index 5c29eca..f0a4fa2 100644 --- a/插件库/Lskj.Control/ModuleGridEx.cs +++ b/插件库/Lskj.Control/ModuleGridEx.cs @@ -3812,10 +3812,10 @@ namespace Lskj.Control this.gcMain.MultiplePrimary = parmaryKey; //合计是否只显示行数 this.gcMain.TotalQuantity = this.SysModel.TotalQuantity; - //判断是否禁用排序 + //判断是否禁用排序和筛选 if (!string.IsNullOrWhiteSpace(this.SysModel.HeaderSortCriteria)) { - this.gcMain.GridView.OptionsCustomization.AllowSort = ValidateCond(this.SysModel.HeaderSortCriteria, null); + this.gcMain.GridView.OptionsCustomization.AllowFilter = this.gcMain.GridView.OptionsCustomization.AllowSort = ValidateCond(this.SysModel.HeaderSortCriteria, null); } // 常用工具