以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  插入行后重新加载行位置不确定  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=94022)

--  作者:skyman1188
--  发布时间:2016/12/13 16:10:00
--  插入行后重新加载行位置不确定
一个表用增加行删除行都没有问题。插入行后,重新打开软件后这一行的位置不确定,是否使用外部表插入行功能不确定呢?
问题是有些表是可以随便插入行而且这一行的位置下次打开软件没有问题的。

--  作者:有点蓝
--  发布时间:2016/12/13 16:19:00
--  
如果数据没有完全加载就是这样的,插入行只根据加载的数据进行计算位置
--  作者:skyman1188
--  发布时间:2016/12/15 9:14:00
--  很小一个表格,是完全加载的
整个表格比较少,就一百多行,是完全加载的表格。难道是因为有隐藏列的原因?
--  作者:有点色
--  发布时间:2016/12/15 9:17:00
--  

重置一下_Sortkey列,然后重新测试

 

DataTable有一个BaseTable属性,返回底层的System.Data.DataTable对象 。
DataRow有一个BaseRow属性,返回底层的System.Data.Row对象。

我们知道,通过常规的代码, 我们是没有办法修改_Identify?_SortKey等系统列的内容.
但是通过上面两个属性,我们直接修改系统列的内容.
例如某个表启用了插入行的功能,如果在某位置插入了太多的行,最后该位置可能再也无法正常插入行,我们可以用下面的代码,重置_SortKey列的内容:

Dim drs As List(of DataRow) = DataTables("表A").Select("","[_SortKey]")
For i As Integer = 0 To drs.Count - 1
    drs(i).BaseRow("_SortKey") = i
Next

执行上述代码后,插入行的功能即可恢复正常.


--  作者:skyman1188
--  发布时间:2016/12/15 9:34:00
--  好了
还真是这样,谢谢!