Foxtable(狐表)用户栏目专家坐堂 → 移动行的时候,实现靠前排序的问题


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

主题:移动行的时候,实现靠前排序的问题

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


加好友 发短信
等级:幼狐 帖子:137 积分:1046 威望:0 精华:0 注册:2021/1/7 16:45:00
移动行的时候,实现靠前排序的问题  发帖心情 Post By:2021/2/20 22:39:00 [只看该作者]

上下移动行按钮事件:
靠上行的单位,单位排序靠前,应该用什么参数返回?

'========================读部门排序===========================
DataTables("部门表").StopRedraw()
With CurrentTable
    .Current.Move(.Position - 1)
End With
Dim wz As Integer = CurrentTable.Position
Dim i As Integer
CurrentTable.Position= 0
For i = 1 To CurrentTable.Count 
    '  CurrentTable(i-1,"排序") = i '逐行写入行号
    Tables("部门表").Rows(i-1)("部门排序") = i

Next
'=======================读单位排序 ===========================
Dim vals As List(Of String) = DataTables("部门表").GetValues("单位")
Dim val As String = Tables("部门表").Current("单位")
Dim ii As Integer = vals.Indexof( val )
If ii >= 0
Tables("部门表").Current("单位排序") = ii+1 '这里没有办法按照靠前优先进行排序
End If

DataTables("部门表").ResumeRedraw()
CurrentTable.Position = wz

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/21 19:44:00 [只看该作者]

没看懂什么意思,截图说明一下

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


加好友 发短信
等级:幼狐 帖子:137 积分:1046 威望:0 精华:0 注册:2021/1/7 16:45:00
  发帖心情 Post By:2021/2/21 21:23:00 [只看该作者]

蓝老师:已经改了,不过两次循环很卡,怎么优化一下

'========================读部门排序===========================
DataTables("部门表").StopRedraw()
With CurrentTable
    .Current.Move(.Position - 1)
End With
Dim wz As Integer = CurrentTable.Position


Dim i As Integer
CurrentTable.Position= 0
For i = 1 To CurrentTable.Count
    '  CurrentTable(i-1,"排序") = i '逐行写入行号
    Tables("部门表").Rows(i-1)("部门排序") = i
    
Next

CurrentTable.Position = wz
'========================读单位排序===========================
Dim 单位组 As List(Of String)
单位组 = DataTables("部门表").GetValues("单位","","部门排序") '列名用符号|分割
Dim ii As  Integer
Dim iii As  Integer

For Each 单位名 As String In 单位组
    ii =  单位组.Indexof(单位名)
    For Each dr As DataRow In DataTables("部门表").DataRows
        If 单位名 = dr("单位")
            'Tables("部门表").Rows(iii-1)("部门排序") = (ii+1)*1000 + iii
            dr("部门排序")=(ii+1)*1000+ dr("部门排序")
        End If
    Next
Next
CurrentTable.Position = wz

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/21 21:34:00 [只看该作者]

没看懂代码表达的意思,请截图表格数据说明一下

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


加好友 发短信
等级:幼狐 帖子:137 积分:1046 威望:0 精华:0 注册:2021/1/7 16:45:00
  发帖心情 Post By:2021/2/22 10:12:00 [只看该作者]

点击上下排序按钮,自动按单位、部门靠前的顺序生成:部门排序列,动画演示如下:

功能实现了,代码执行太卡


图片点击可在新窗口打开查看此主题相关图片如下:简单演示33.gif
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/22 10:27:00 [只看该作者]

排序规则是什么?为什么可以从3004变为2003?

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


加好友 发短信
等级:幼狐 帖子:137 积分:1046 威望:0 精华:0 注册:2021/1/7 16:45:00
  发帖心情 Post By:2021/2/22 10:32:00 [只看该作者]

getvalues单位列得出靠前的第几个单位顺序,加上部门列靠前顺序
002003  就是第2个单位,第3个部门

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/22 11:32:00 [只看该作者]

With CurrentTable
    If .Position > 0
        .Current.Move(.Position - 1)
        Dim r As Row = .Rows(.Position)
        Dim ps As List(Of String)= DataTables("表A").GetValues("单位","","_sortkey")
        For i As Integer = r.Index To .Rows.count - 1
            .Rows(i)("部门排序") = (ps.Indexof(.Rows(i)("单位")) +1) * 1000 + i+1
        Next
    End If
End With


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


加好友 发短信
等级:幼狐 帖子:137 积分:1046 威望:0 精华:0 注册:2021/1/7 16:45:00
  发帖心情 Post By:2021/2/22 13:10:00 [只看该作者]

这也太厉害了吧!666666 虽然那几行代码读不懂

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/22 13:35:00 [只看该作者]

那就多看看编程基础。都是基础的语法

 回到顶部
总数 11 1 2 下一页