以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  在DataList中怎样通过鼠标拖动选择连续的多行?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2972)

--  作者:cpayinyuan
--  发布时间:2009/5/31 13:50:00
--  在DataList中怎样通过鼠标拖动选择连续的多行?
    在DataList中,可以通过点击选择框的方式选择一行或者多行,但是,在DataList中,若要选择连续的100行,如果用鼠标一个一个来点,恐怕就效率太低太不方便了!既然是连续的多行,如果能够通过鼠标拖动自动把鼠标拖动的连续多行的选择框自动设为True,就比较方便高效了。系统中没有这个功能,DataList中只有鼠标移动的事件没有鼠标拖动的事件,请教一下这个功能能否通过事件代码来实现?
 
[此贴子已经被作者于2009-5-31 13:56:11编辑过]

--  作者:八婺
--  发布时间:2009/5/31 14:53:00
--  
在窗口插入一个复选框控件。

DataList的CurrentChanged事件代码。


if e.Form.Controls("CheckBox1").Checked = true Then
    Dim dst As WinForm.DataList = e.Sender
    Dim dr as DataRow = e.Sender.Current
    dst.SetChecked(dst.Position,True)
End If

[此贴子已经被作者于2009-5-31 14:53:10编辑过]

--  作者:八婺
--  发布时间:2009/5/31 14:57:00
--  狐表能开发Photoshop滤镜吗??
也可以这样。

Dim dst As WinForm.DataList = e.Sender
Dim dr as DataRow = e.Sender.Current
if e.Form.Controls("CheckBox1").Checked = true Then
    dst.SetChecked(dst.Position,True)
Else
    dst.SetChecked(dst.Position,false)
End If


独立和模式窗口,这个功能要老六消灭5.25版本的bug才行。
[此贴子已经被作者于2009-5-31 14:58:45编辑过]

--  作者:cpayinyuan
--  发布时间:2009/5/31 16:02:00
--  
谢谢!
--  作者:yangming
--  发布时间:2009/5/31 16:21:00
--  
又学了一招,呵呵
--  作者:cpayinyuan
--  发布时间:2009/5/31 16:36:00
--  
以下是引用八婺在2009-5-31 14:57:00的发言:
也可以这样。

Dim dst As WinForm.DataList = e.Sender
Dim dr as DataRow = e.Sender.Current
if e.Form.Controls("CheckBox1").Checked = true Then
    dst.SetChecked(dst.Position,True)
Else
    dst.SetChecked(dst.Position,false)
End If


独立和模式窗口,这个功能要老六消灭5.25版本的bug才行。
[此贴子已经被作者于2009-5-31 14:58:45编辑过]

总是提示找不到选择框,估计是5月25号版本的Bug,期待贺老师尽快消灭此BUG。

另外,上述代码实现这个功能有一个小问题:就是当单选框选中的时候,因为是写在CurrentChanged事件中,所以不但鼠标拖动会自动选择,正常的变更行也会自动选择当前行,所以不太方便(正常的情况下应该是只选择拖动时的行,而不选择行变更经过的行)。需要把鼠标移动选择的行手工取消,或者反复切换选择框,不太方便。

所以,看有无用代码解决的办法。或者最好是贺老师给DataList加一个属性,就更方便了。同时,也建议,另一位老兄提的单选/多选的选项也给DataList加一个属性。

[此贴子已经被作者于2009-5-31 21:55:19编辑过]

--  作者:cpayinyuan
--  发布时间:2009/6/1 8:49:00
--  
补充:
   即建议给DataList增加两个属性:
 (1)鼠标拖动是否自动选择;
 (2)是否多选(还是单选)
--  作者:狐狸爸爸
--  发布时间:2009/6/1 8:53:00
--  
我看看
--  作者:cpayinyuan
--  发布时间:2009/6/1 11:36:00
--  
    另外,用鼠标拖动选择行的时候,当拖动一次的时候,应把其他的选择框的选定状态全部清空(即把以前通过鼠标点击或者拖动选定的所有选择框的选定状态清空),即在DataList中多次拖动的时候,应只把最后一次拖动的行的选择框设为True,其他的行的选择框全部设为false.(类似于在table中用鼠标拖动选择多行的操作方式).
--  作者:卟离卟弃
--  发布时间:2009/6/1 15:16:00
--  
好计策。。。。。
支持狐爸想想办法。。