以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表格局部排序如何实现  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67001)

--  作者:打错潇洒
--  发布时间:2015/4/17 11:03:00
--  表格局部排序如何实现
Excel 里面 排序 可以对选择的列 进行排序 未选择的列不排序 

狐表如何实现?

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

狐表里面

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

Excel 里面

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

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

--  作者:狐狸爸爸
--  发布时间:2015/4/17 11:06:00
--  
这个比较麻烦,稍等,我做个例子给你
--  作者:狐狸爸爸
--  发布时间: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

--  作者:狐狸爸爸
--  发布时间: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


同样是第二列降序。