Skip to content

Commit e175eba

Browse files
committed
revert: 恢复部分代码
1 parent 332b160 commit e175eba

2 files changed

Lines changed: 25 additions & 12 deletions

File tree

src/BootstrapBlazor/Dynamic/DataTableDynamicContext.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,21 @@ private List<IDynamicObject> BuildItems()
129129
{
130130
if (!row.IsDeletedOrDetached())
131131
{
132-
var d = new DataTableDynamicObject(row);
133-
_dataCache.TryAdd(d.DynamicObjectPrimaryKey, d);
134-
ret.Add(d);
132+
var dynamicObject = Activator.CreateInstance(_dynamicObjectType);
133+
if (dynamicObject is DataTableDynamicObject d)
134+
{
135+
d.Row = row;
136+
foreach (DataColumn col in DataTable.Columns)
137+
{
138+
if (!row.IsNull(col))
139+
{
140+
Utility.SetPropertyValue<object, object?>(d, col.ColumnName, row[col]);
141+
}
142+
}
143+
144+
_dataCache.TryAdd(d.DynamicObjectPrimaryKey, d);
145+
ret.Add(d);
146+
}
135147
}
136148
}
137149
return ret;
@@ -188,7 +200,7 @@ public override async Task AddAsync(IEnumerable<IDynamicObject> selectedItems)
188200
DataTable.AcceptChanges();
189201

190202
// 新建动态类型属性赋值
191-
var dynamicObject = new DataTableDynamicObject(row);
203+
var dynamicObject = new DataTableDynamicObject() { Row = row };
192204

193205
// 触发 Changed 回调
194206
if (OnChanged != null)

src/BootstrapBlazor/Dynamic/DataTableDynamicObject.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,31 @@ namespace BootstrapBlazor.Components;
1111
/// <para lang="zh">DataTable 动态类实例</para>
1212
/// <para lang="en">DataTable dynamic class instance</para>
1313
/// </summary>
14-
public class DataTableDynamicObject(DataRow row) : DynamicObject
14+
public class DataTableDynamicObject : DynamicObject
1515
{
1616
/// <summary>
1717
/// <para lang="zh">获得 其关联 DataRow 实例</para>
1818
/// <para lang="en">Gets the associated DataRow instance</para>
1919
/// </summary>
20-
public DataRow Row => row;
20+
[NotNull]
21+
internal DataRow? Row { get; set; }
2122

2223
/// <summary>
2324
/// <inheritdoc/>
2425
/// </summary>
2526
/// <param name="propertyName"></param>
2627
public override object? GetValue(string propertyName)
2728
{
28-
if (row.IsDeletedOrDetached())
29+
if (Row.IsDeletedOrDetached())
2930
{
3031
return null;
3132
}
3233

3334
object? ret = null;
34-
var column = row.Table.Columns[propertyName];
35+
var column = Row.Table.Columns[propertyName];
3536
if (column != null)
3637
{
37-
ret = row[propertyName];
38+
ret = Row[propertyName];
3839

3940
// 判断 DBNull 情况
4041
if (ret is DBNull)
@@ -60,14 +61,14 @@ public class DataTableDynamicObject(DataRow row) : DynamicObject
6061
/// </summary>
6162
public override void SetValue(string propertyName, object? value)
6263
{
63-
if (row.IsDeletedOrDetached())
64+
if (Row.IsDeletedOrDetached())
6465
{
6566
return;
6667
}
6768

68-
if (row.Table.Columns.Contains(propertyName))
69+
if (Row.Table.Columns.Contains(propertyName))
6970
{
70-
row[propertyName] = value;
71+
Row[propertyName] = value;
7172
}
7273
}
7374

0 commit comments

Comments
 (0)