以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]行拖动问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=65566)

--  作者:pcxjxjhkw
--  发布时间:2015/3/18 15:02:00
--  [求助]行拖动问题
在一个listview中,已做出拖动行操作,显示询问对话框,询问用户是否按拖动后的行顺序显示
问题:如果否,如何恢复到拖动前的状态。
谢谢

--  作者:有点甜
--  发布时间:2015/3/18 15:10:00
--  

BeforeDropRow 事件

 

Dim Result As DialogResult
Result = MessageBox.Show("是不是?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.No Then
    e.Cancel = True
End If


--  作者:pcxjxjhkw
--  发布时间:2015/3/18 15:14:00
--  
甜老师,不想把代码写在BeforeDropRow 事件中。代码写在按钮中。
是已经拖动了多次,有两个按钮,一个确定,一个取消。


--  作者:有点甜
--  发布时间:2015/3/18 15:18:00
--  

 拖动之前,把listview数据保存起来;比如保存到另一个listview里面去;点取消,就重新生成。


--  作者:pcxjxjhkw
--  发布时间:2015/3/18 15:23:00
--  
我用行Index赋值经行的text,可否通过还原行的Index来实现。

--  作者:pcxjxjhkw
--  发布时间:2015/3/18 15:27:00
--  
不行呀,行Index为只读。
--  作者:有点甜
--  发布时间:2015/3/18 15:38:00
--  

 叫你重新生成一次啊。


--  作者:有点甜
--  发布时间:2015/3/18 15:55:00
--  

 测试了一下,如果你是要两行交换位置的话,参考下面的代码,但这种也会很麻烦的。还不如重新生成一次

 

Dim lvw = e.Form.Controls("ListView1").basecontrol
Dim idx1 = 2
Dim idx2 = 5

Dim i1 = lvw.Items(idx1)
lvw.items.removeat(idx1)
lvw.items.Insert(idx2, i1)
Dim i2 = lvw.items(idx2-1)
lvw.items.removeat(idx2-1)
lvw.items.Insert(idx1, i2)


--  作者:pcxjxjhkw
--  发布时间:2015/3/18 17:07:00
--  
怎么没有像表的Move命令呢?

--  作者:有点甜
--  发布时间:2015/3/18 17:39:00
--  

 remove + insert = move 啊