以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  表格中怎样实现对行和列的拖拽排序?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=40645)

--  作者:jsq96jg
--  发布时间:2013/9/25 16:23:00
--  表格中怎样实现对行和列的拖拽排序?

想在表格中通过拖动人员或者拖动行号、列号的形式进行人员的重新排列;比如想把第10条记录拖到第3条,而不是一行一行往上移动,该怎样实现?


--  作者:Bin
--  发布时间:2013/9/25 16:33:00
--  

AfterSelRangeChange 事件


If e.Table.TopPosition<e.Table.Current.Index Then

e.Table.Current.Move(e.Table.TopPosition)

Else

e.Table.Current.Move(e.Table.BottomPosition)

End If


--  作者:jsq96jg
--  发布时间:2013/9/25 16:42:00
--  

试试看,冰的主意应该不会错,先谢过啦!


--  作者:jsq96jg
--  发布时间:2013/9/25 16:52:00
--  
冰太伟大了,哈,成功!谢谢冰啊!
--  作者:逛逛
--  发布时间:2013/9/25 16:56:00
--  

Bin         冰     ?    

 

 

好听                    

 

图片点击可在新窗口打开查看


--  作者:jsq96jg
--  发布时间:2013/11/4 10:47:00
--  

这下,行是可以拖动了,可是单击列标题的时候,第一行会直接跑到最后一行。

    If e.newrange.TopRow>=0  Then
            If  e.Table.Current.Index>=0 And e.Table.Current.Index<=e.Table.count-1 Then
                If e.Table.TopPosition<e.Table.Current.Index  Then
                    e.Table.Current.Move(e.Table.TopPosition)
                Else
                    e.Table.Current.Move(e.Table.BottomPosition)
                End If
            End If
   End If
这段代码,单击列标题则第一行会跑到最后一行,如果把第一行代码改成e.newrange.TopRow>0 的时候,则第一行不能被拖动。

请问该怎样修改才能解决这个问题?


--  作者:Bin
--  发布时间:2013/11/4 10:51:00
--  
你这个代码是放在哪里的呢?是想实现什么需求呢?
--  作者:jsq96jg
--  发布时间:2013/11/4 11:25:00
--  

上次是按你的指导,实现了拖动行排序,但今天我发现,在.toprow=0的时候,好像是同时也选中了列头,所以点击列头的时候,第一行会自己跑到最后一行,同时也不能选中整列了,这不符合常用习惯。改成>0就没问题了,但第一行却不能拖动。

    现在希望第一行也能正常拖动,并且单击列头的时候依然能够选中整列。


--  作者:Bin
--  发布时间:2013/11/4 11:29:00
--  
If e.NewRange.TopRow=0 AndAlso e.NewRange.BottomRow=e.Table.Rows.count-1 Then
Else
    If e.Table.TopPosition<e.Table.Current.Index Then
        e.Table.Current.Move(e.Table.TopPosition)
    Else
        e.Table.Current.Move(e.Table.BottomPosition)
    End If
End If

--  作者:jsq96jg
--  发布时间:2013/11/4 11:36:00
--  

这样貌似不行,单击列头,第一列仍然会跑到最后一行,并且表内其他行也不能拖动了。