以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 数据表移动行排序遇到问题请教 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160669) |
-- 作者:jq_shang -- 发布时间:2021/2/13 5:22:00 -- 数据表移动行排序遇到问题请教 作为老年新手,大年初一晚上通宵不睡,解决不了以下问题,特此请教专家大咖: 数据表行排序,采用移动行位置的方式,代码在命令窗口运行没问题。在程序窗口中打开后,运行经常出错。通过观察发现,如果用鼠标任意点击一下table,运行就能正常。如果不点击,则不能正常进行排序。代码中加入表格选择相关命令,也不能解决问题。代码如下:
Dim c As Integer = Tables("当日积分表").Rows.count() |
-- 作者:xongyijd -- 发布时间:2021/2/13 11:55:00 -- 移动行怎么麻烦吗?我这样你参考一下 Dim dtb As New DataTableBuilder("列设置") \'增加临时表绑定 dtb.AddDef("顺序", Gettype(Integer)) dtb.AddDef("_SortKey", Gettype(Double)) dtb.AddDef("_Identify", Gettype(Integer)) dtb.AddDef("列名称", Gettype(String), 30) dtb.AddDef("列宽", Gettype(Integer)) dtb.AddDef("显示", Gettype(Boolean)) du1.Table.DataSource =dtb.BuildDataSource() Dim du1 As WinForm.Table = e.Form.Controls("Table1") Select Case e.StripItem.Name Case "下移" If du1.Table.Current IsNot Nothing Then du1.Table.Current.Move(du1.Table.Position + 1) End If For Each dt As Row In du1.Table.Rows dt("顺序")= dt.Index+1 Next Case "上移" If du1.Table.Current IsNot Nothing Then du1.Table.Current.Move(du1.Table.Position - 1) End If For Each dt As Row In du1.Table.Rows dt("顺序")= dt.Index+1 Next 主要的是要增加_SortKey列 |
-- 作者:jq_shang -- 发布时间:2021/2/13 16:43:00 -- 谢谢您啊! |
-- 作者:jq_shang -- 发布时间:2021/2/13 19:05:00 -- 不好意思,我的上述代码逻辑一塌糊涂。我还没有弄明白冒泡逻辑呢。 |
-- 作者:jq_shang -- 发布时间:2021/2/14 15:15:00 -- 问题已解决,谢谢各位! |