写了一个全局过程如下,来代替datatable的load方法.正在测试中.
Public Sub ReloadData(ByVal dt As DataTable,ByVal se As Boolean) '全局过程,用于加载表前清空表达式列的公式,并于加载表后还原相应公式.
'创建临时表用于保存表达式列名称及对应公式
Dim dtb As New DataTableBuilder("表达式列暂存")
Dim tempdt As DataTable
dtb.AddDef("列名", Gettype(String), 30)
dtb.AddDef("表达式", Gettype(String), 200)
tempdt = dtb.Build(True)
'下面将表达式列公式保存到临时表
Dim tempdr As DataRow
Dim pi As System.Reflection.PropertyInfo
For Each dc As DataCol In dt.DataCols
pi = dc.Gettype.getproperty("IsTemporary",Reflection.BindingFlags.nonpublic Or Reflection.BindingFlags.Instance)
If pi.getvalue(dc,Nothing) Then
tempdr = tempdt.AddNew()
tempdr("列名") = dc.Name
tempdr("表达式") = dc.Expression
dc.Expression =""
End If
Next
dt.Load(se)
'下面将表达式列公式还原
For Each dr As DataRow In tempdt.DataRows
dt.DataCols(dr("列名")).Expression = dr("表达式")
Next
End Sub
[此贴子已经被作者于2017/9/15 8:55:55编辑过]