leikaihua 发表于 2014-12-1 11:58:00

排序

使用Sort 排序的时候。依照行进行排序。

虽然行单元格的数据正确排序,但是其行的行高并没有随之排序,请问有解决办法吗?

leikaihua 发表于 2014-12-1 19:16:00

还有 行进行排序的时候对应的表头 并没有随之移动,如何解决?

iceman 发表于 2014-12-1 19:41:00

回复 1楼leikaihua的帖子

1# 问题,只是对 Spread 底层数据模型进行排序,无法使格式随机调整。

可以尝试把行高放置在排序单元格的 tag 中,在排序完成后取 tag值重新设置,Tag使用参考代码:

Private Sub Command1_Click()
   fpSpread1.SortKey(1) = 1
   
    fpSpread1.SortKeyOrder(1) = SortKeyOrderDescending
    fpSpread1.Sort -1, -1, -1, -1, SortByRow
   
    fpSpread1.Col = 1
    fpSpread1.Row = 2
    Dim a As String
    a = fpSpread1.CellTag
   
   
   
End Sub

Private Sub Form_Load()
fpSpread1.Col = 1
fpSpread1.Row = 1
fpSpread1.Value = 1
fpSpread1.CellTag = "1"
fpSpread1.TextTip = TextTipFixed
fpSpread1.Row = 2
fpSpread1.Value = 2
End Sub

leikaihua 发表于 2014-12-2 10:21:00

回复 3楼iceman的帖子

那与 行同一行的表头 并没有随之移动 有啥办法?

iceman 发表于 2014-12-2 17:46:00

回复 4楼leikaihua的帖子

使用同样方法应该也可以实现,我理解取行高的代码变成取行头就可以了。

leikaihua 发表于 2014-12-2 19:55:00

回复 5楼iceman的帖子

排序时,如果有隐藏行SPREAD是如何处理的,尝试了多半天实在摸不着头脑。

比如我把第3行已经隐藏,排序时,spread 还会再隐藏一行。。。。。。。。      

1、spread排序时如何处理隐藏行?如果仅仅只是数据模型排序,为啥还会自动隐藏一行?
2、如何让spread排序时忽略掉隐藏行?

iceman 发表于 2014-12-3 16:27:00

回复 6楼leikaihua的帖子

你好,

正如之前我们讨论的,Spread 排序是根据底层数据模型来排序的,通过隐藏和显示控制某一行的可见性是 UI 层操作,对底层数据没有影响。

回到正题,针对当前的需求,可以针对隐藏行维护一个列表,记录其原始和排序后的位置,使用 Me.fpSpread1.MoveRowRange 方法进行移动。请你先尝试下。

谢谢

leikaihua 发表于 2014-12-4 11:53:00

回复 7楼iceman的帖子

多谢版主再次热心的回复。

问个题外话,   移动行数据;复制行数据;交换行数据;这三个命令哪个执行速度最快?

iceman 发表于 2014-12-4 19:16:00

回复 8楼leikaihua的帖子

不客气,应该做的。

复制行数据应该是效率最快的。
页: [1]
查看完整版本: 排序