原来是用动态生成datatable的办法,如下面的代码:
Dim q As new OuterTableBuilder
q.TableName = 表名
q.TableCaption = 表名
q.ConnectionName = 数据源
q.SelectString = "Se lect * Fr om [" & 表名 & "] "
q.Build
生成datatable后,再用datasource绑定到窗口table,绑定的过程很快,但是生成datatable的过程明显有卡顿,所以后来探索其他的动态加载手段,发现用sql语句直接fill,速度要快很多,所以才改成了fill。
现在找到了为什么行会出现在上方的原因,确实因为是sortkey的问题,之前我用如下代码干预sortkey:
If dt.basetable.Columns.contains("_SortKey") Then
Dim drs As List(of DataRow) = dt.Select("","[_SortKey]")
For i As Integer = 0 To drs.Count - 1
If drs(i).BaseRow("_SortKey") <> i+1 Then
drs(i).BaseRow("_SortKey") = i+1
End If
Next
End If
现在我才发现 drs(i).BaseRow("_SortKey") = i+1这句对新增行干预无效,合成的sql语句无法保存新增行的sortkey 至服务器上,求解决方案!