diff --git a/插件库/Lskj.Control/GridControlEx.cs b/插件库/Lskj.Control/GridControlEx.cs
index bd26ec2..92bad48 100644
--- a/插件库/Lskj.Control/GridControlEx.cs
+++ b/插件库/Lskj.Control/GridControlEx.cs
@@ -456,7 +456,7 @@ namespace Lskj.Control
{
var subField = column.Tag as GridColumnModel;
if (subField == null) continue;
-
+
string dynamicFieldName = column.FieldName;
object updatedValue = updatedRow[dynamicFieldName];
@@ -6659,6 +6659,7 @@ namespace Lskj.Control
///
private void BuildDynamicGroupedColumns(BandedGridControlEx bandedGridControlEx, DataTable originalDataSource)
{
+ bandedGridControlEx.BandedView.BeginUpdate();
// 数据源改变时必须重复执行此逻辑
bandedGridControlEx.BandedView.OptionsView.ColumnAutoWidth = false;
@@ -6728,17 +6729,15 @@ namespace Lskj.Control
OptionsColumn = { FixedWidth = true } // <-- 明确设置固定宽度
};
+ bandedGridControlEx.SetColumnFormat(subColumn, subField);
dynamicBand.Columns.Add(subColumn);
bandedGridControlEx.BandedView.Columns.Add(subColumn);
}
}
-
+ bandedGridControlEx.BandedView.EndUpdate();
// 构建最终动态数据源
DataTable dynamicDataTable = BuildDynamicDataSource(originalDataSource, GroupPrimary, GroupFieldprimary, GroupField, normalColumns, dynamicHeaders);
bandedGridControlEx.gridControl.DataSource = dynamicDataTable;
-
- // 最后再强制刷新布局
- bandedGridControlEx.BandedView.LayoutChanged();
}
///
@@ -6764,13 +6763,20 @@ namespace Lskj.Control
// 添加主键列
if (!dtResult.Columns.Contains(GroupPrimary.FieldName))
- dtResult.Columns.Add(GroupPrimary.FieldName, typeof(string));
+ {
+ Type dataType = originalDataSource.Columns[GroupPrimary.FieldName].DataType;
+ dtResult.Columns.Add(GroupPrimary.FieldName, dataType);
+ }
+
// 添加普通列,仅当原数据源存在时才添加
foreach (var col in normalColumns)
{
if (originalDataSource.Columns.Contains(col.FieldName))
- dtResult.Columns.Add(col.FieldName, typeof(string));
+ {
+ Type dataType = originalDataSource.Columns[col.FieldName].DataType;
+ dtResult.Columns.Add(col.FieldName, dataType);
+ }
}
// 添加动态列 (改为string类型避免异常)
@@ -6780,7 +6786,10 @@ namespace Lskj.Control
{
string dynamicFieldName = $"{header}_{subField.FieldName}";
if (!dtResult.Columns.Contains(dynamicFieldName))
- dtResult.Columns.Add(dynamicFieldName, typeof(string)); // <-- 此处已修改为string
+ {
+ Type dataType = originalDataSource.Columns[subField.FieldName].DataType;
+ dtResult.Columns.Add(dynamicFieldName, dataType); // <-- 此处已修改为string
+ }
}
}