Foxtable(狐表)用户栏目专家坐堂 → 表格局部排序如何实现


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

主题:表格局部排序如何实现

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


加好友 发短信
等级:二尾狐 帖子:568 积分:6437 威望:0 精华:2 注册:2012/12/23 8:21:00
表格局部排序如何实现  发帖心情 Post By:2015/4/17 11:03:00 [只看该作者]

Excel 里面 排序 可以对选择的列 进行排序 未选择的列不排序 

狐表如何实现?

我要对我需要的列进行排序 不需要的列不排序保持原来的数据顺序

狐表里面

图片点击可在新窗口打开查看此主题相关图片如下:2014041702.jpg
图片点击可在新窗口打开查看

Excel 里面

图片点击可在新窗口打开查看此主题相关图片如下:20140417.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2015/4/17 11:08:19编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/4/17 11:06:00 [只看该作者]

这个比较麻烦,稍等,我做个例子给你

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/4/17 11:27:00 [只看该作者]

例如对第二列选中区域进行降序排序,要修的只是红色区域:

Dim t As Table = Tables("表A")
Dim pzs As Integer = t.TopPosition
Dim drs As List(of DataRow) = DataTables("表A").Select("[_Sortkey] >= " & t.Rows(t.TopPosition)("_SortKey") & " And [_SortKey] <= " & t.Rows(t.BottomPosition)("_SortKey"),"第二列 Desc")
t.StopRedraw
For i As Integer = 0 To drs.count -1
    Dim wz As Integer = t.FindRow(drs(i))
    t.Rows(wz).Move(pzs+i)
Next
t.Select(pzs,t.ColSel,pzs + drs.count -1,pzs)
t.ResumeRedraw

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/4/17 11:37:00 [只看该作者]

如果不想影响行的顺序,指向对选定区域的内容排序,参考:


Dim t As Table = Tables("表A")
Dim pzs As Integer = t.TopPosition
Dim Vals As List(of String) = DataTables("表A").GetValues("第二列","[_Sortkey] >= " & t.Rows(t.TopPosition)("_SortKey") & " And [_SortKey] <= " & t.Rows(t.BottomPosition)("_SortKey"),"第二列 Desc")
t.StopRedraw
For i As Integer = t.TopPosition To t.BottomPosition
    t.Rows(i)("第二列") = vals(i-t.TopPosition)
Next
t.ResumeRedraw


同样是第二列降序。

 回到顶部