Foxtable(狐表)用户栏目专家坐堂 → 数据表移动行排序遇到问题请教


  共有2971人关注过本帖树形打印复制链接

主题:数据表移动行排序遇到问题请教

帅哥哟,离线,有人找我吗?
jq_shang
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
数据表移动行排序遇到问题请教  发帖心情 Post By:2021/2/13 5:22:00 [只看该作者]

作为老年新手,大年初一晚上通宵不睡,解决不了以下问题,特此请教专家大咖:

数据表行排序,采用移动行位置的方式,代码在命令窗口运行没问题。在程序窗口中打开后,运行经常出错。通过观察发现,如果用鼠标任意点击一下table,运行就能正常。如果不点击,则不能正常进行排序。代码中加入表格选择相关命令,也不能解决问题。代码如下:

 

Dim c As Integer = Tables("当日积分表").Rows.count()
For j As Integer = 0 To c-1 '如果有15行,则只需要用下面14行来比较冒泡.15行循环14次.循环次数=行数-1
    For i As Integer = c-1 To 1 Step -1 '内循环,第一层冒泡,从最后一行开始.i = 当前行的序号
        Dim dqh As Row = Tables("当日积分表").Rows(i) '当前行
        If dqh("计工") = False Then '如果计工无效,则退出,不继续计算,开始倒数第二行的比较
            Continue For  'Exit For
        Else
            Tables("当日积分表").Position = i
            Dim n As Integer = Tables("当日积分表").Position
            Dim bjh As Row = Tables("当日积分表").Rows(i-1) '比较行
            If bjh("计工") = False  OrElse dqh("原始名次") < bjh("原始名次") Then
                Syscmd.Row.MoveUp()'选择当前行,并上移
            End If
        End If
    Next
    Tables("当日积分表").Position = c-1
Next


 回到顶部
帅哥哟,离线,有人找我吗?
xongyijd
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:245 积分:3629 威望:0 精华:1 注册:2010/5/9 18:45:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
  发帖心情 Post By:2021/2/13 16:43:00 [只看该作者]

谢谢您啊!

 回到顶部
帅哥哟,离线,有人找我吗?
jq_shang
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
  发帖心情 Post By:2021/2/13 19:05:00 [只看该作者]

不好意思,我的上述代码逻辑一塌糊涂。我还没有弄明白冒泡逻辑呢。

 回到顶部
帅哥哟,离线,有人找我吗?
jq_shang
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
  发帖心情 Post By:2021/2/14 15:15:00 [只看该作者]

 

问题已解决,谢谢各位!

 

 


 回到顶部