Foxtable(狐表)用户栏目专家坐堂 → 在DataList中怎样通过鼠标拖动选择连续的多行?


  共有23423人关注过本帖树形打印复制链接

主题:在DataList中怎样通过鼠标拖动选择连续的多行?

帅哥哟,离线,有人找我吗?
cpayinyuan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
在DataList中怎样通过鼠标拖动选择连续的多行?  发帖心情 Post By:2009/5/31 13:50:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
八婺
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:252 积分:1355 威望:0 精华:0 注册:2009/4/5 13:06:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
八婺
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:252 积分:1355 威望:0 精华:0 注册:2009/4/5 13:06:00
狐表能开发Photoshop滤镜吗??  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/5/31 16:02:00 [只看该作者]

谢谢!

 回到顶部
美女呀,离线,留言给我吧!
yangming
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/5/31 16:21:00 [只看该作者]

又学了一招,呵呵

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/6/1 8:49:00 [只看该作者]

补充:
   即建议给DataList增加两个属性:
 (1)鼠标拖动是否自动选择;
 (2)是否多选(还是单选)

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/1 8:53:00 [只看该作者]

我看看

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/6/1 11:36:00 [只看该作者]

    另外,用鼠标拖动选择行的时候,当拖动一次的时候,应把其他的选择框的选定状态全部清空(即把以前通过鼠标点击或者拖动选定的所有选择框的选定状态清空),即在DataList中多次拖动的时候,应只把最后一次拖动的行的选择框设为True,其他的行的选择框全部设为false.(类似于在table中用鼠标拖动选择多行的操作方式).

 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2009/6/1 15:16:00 [只看该作者]

好计策。。。。。
支持狐爸想想办法。。

 回到顶部
总数 20 1 2 下一页