以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  删除行后 _SortKey字段怎么从当前剩余的最后一行加1  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=86924)

--  作者:jinzhengbe
--  发布时间:2016/6/28 21:48:00
--  删除行后 _SortKey字段怎么从当前剩余的最后一行加1
删除行后 _SortKey字段怎么从当前剩余的最后一行加1

如题

前提条件

假如 最后一个 sortkey的值是 99

删除10行后 最后一个sortkey 是89

结果

如果现在添加一行的话  _SortKey应该是 100  而不是90

这种情况如果想让_sortkey 自动变成90 应该怎么办?


如果现在添加10行的话,最后一行的sortkey自动变成99

--  作者:大红袍
--  发布时间:2016/6/28 22:23:00
--  

_Sortkey用来排序,有必要那么在意其值么?

 

如果要做,你可以在DataRowAdding事件给其赋值啊,如

 

e.Datarow("_Sortkey") = e.DataTable.Compute("max(_Sortkey)") + 1


--  作者:jinzhengbe
--  发布时间:2016/6/29 12:16:00
--  
我是想每增加一行,累计的值 能在上一行的基础上自动加1, 正常的情况下用_Sortkey是没有问题的,但是如果中间有删除的行, _Sortkey 就会不准,会比实际累计值大

所以我感觉您给的方案好像也不行。还有没有其他的办法? 大师图片点击可在新窗口打开查看
[此贴子已经被作者于2016/6/29 12:19:08编辑过]

--  作者:大红袍
--  发布时间:2016/6/29 12:28:00
--  

 重置_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


--  作者:kylin
--  发布时间:2016/6/29 12:35:00
--  
_Sortkey这么折腾其实没有大的意义,碰到大数据量怎么办,楼主还是清楚表达通过这个_Sortkey要做什么功能,大家就可能帮你寻找更有效、快捷的方案。