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


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

主题:在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编辑过]

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


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

谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

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

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


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

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

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/6/1 17:18:00 [显示全部帖子]

以下是引用mr725在2009-6-1 16:14:00的发言:
我一直没看明白这个题目,也就是在什么情况下能用到? 知道的给个例子或做个文件来看看好吗 ~  再说,要选中连续100行,一个循环不就可以搞定了吗? 真不明白呀~   好像要有个像: mousedown+move 的合并事件似的,非得用鼠标拖动?~~
                                  俺就是反应太慢了~  呵呵。

    呵呵,如果事先知道选取哪100行,当然可以用循环实现.但若是临时用鼠标选择连续的100行,是没有办法用代码实现的.
    例如,在订单中要增加产品时,产品选择窗口我们用DataList实现,在DataList中选定的产品添加到订单表中.如果要增加一个两个产品,可以直接用鼠标单击实现,若要增加产品表中某个位置的连续50个产品,这时候用鼠标拖动是最方便的了.

[此贴子已经被作者于2009-6-1 17:19:00编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
我要输的文字较多,一个单元格无法显示出来。怎么不能合并单元格啊?  发帖心情 Post By:2009/6/1 22:03:00 [显示全部帖子]

以下是引用mr725在2009-6-1 19:26:00的发言:

似乎觉得从任何位置开始,只要时连续的,那么点击一次按钮就可以选定n行的~ (不是有行号作标记吗), 不如做个例子上来,看看大家有没有办法。

      呵呵,不用做例子,用代码肯定能实现,只是非常不方便!如果非要用代码实现,会非常繁锁,要多次操作才能实现。例如先定义从何处开始,然后再定义选多少行,才能生成代码。如果是随机性的没有规律性的选择连续的多行,用鼠标拖动是最方便快捷的了!再打个比方,在狐表/易表/Excel中的表中,都可以用鼠标拖动的方式选择连续的若干个单元格,并对这些单元格进行统一的操作,这种随机性的鼠标拖动选择非常方便,如果非要改为用代码的方式,当然也可以选择连续的若干个单元格,但在有时候会不够灵活,没有鼠标直接拖动快捷!其实我的建议就是类似于表中用鼠标拖动的方式选择单元格,只不过改到了DataList中。
     或许13楼的老兄批评得有点道理,但是,实质上我是建议增加一些功能,而不改变现有的功能。如果在系统中很方便实现,又可以为一部分用户提供方便,何乐而不为呢?

[此贴子已经被作者于2009-6-1 22:04:23编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/6/2 11:38:00 [显示全部帖子]

以下是引用mr725在2009-6-2 9:46:00的发言:

选择行数多的话,在datalist所在的窗口上增加:两个文本框,两个按钮
文本框1、 确定要开始构选的行号
文本框2、 确定要结束构选的行号
按钮1、    点击确定,选中上面行号之间的复选框
按钮2、    清空所有复选框
这样不是可以想选择哪几行都可以(少的话直接点击鼠标)? 而且随文本框内容不同可以多次选择啊~  跟前面说的用true或false应该道理一样的。 (它们也要在不同的事件中加代码,而且要操作人员要熟悉操作步骤,麻烦啊~ )
我理解没错吧~  ?呵呵

    您的方法完全可以,也非常方便!
    但如果贺老师给 DataList加一个属性,拖动鼠标是否自动选择行,实现这个功能就不必这么麻烦了.直接拖鼠标就选择了连续的多行,再次拖动时自动清除以前选择的行,不必再输入开始和结束的行号,也不必用按钮清除与开始选定.
   在有些情况下,采用老兄的这个办法,即输入开始行号和结束行号比较方便;但也有一些情况下,用鼠标直接拖动更为灵活.两种方法各有长短,还是希望贺老师增加此项属性.


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/6/7 10:06:00 [显示全部帖子]

以下是引用cpayinyuan在2009-6-2 11:38:00的发言:

    您的方法完全可以,也非常方便!
    但如果贺老师给 DataList加一个属性,拖动鼠标是否自动选择行,实现这个功能就不必这么麻烦了.直接拖鼠标就选择了连续的多行,再次拖动时自动清除以前选择的行,不必再输入开始和结束的行号,也不必用按钮清除与开始选定.
   在有些情况下,采用老兄的这个办法,即输入开始行号和结束行号比较方便;但也有一些情况下,用鼠标直接拖动更为灵活.两种方法各有长短,还是希望贺老师增加此项属性.

      贺老师,这个改进对您来说是举手之劳,还是希望支持一下,加到软件中!谢谢!


 回到顶部