以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]ListView拖动行为下的选择性删除问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=90651) |
-- 作者:沦落深蓝 -- 发布时间:2016/9/19 10:39:00 -- [求助]ListView拖动行为下的选择性删除问题 请教老师~~~在学习运用ListView拖动行为的过程中,以CaseStudy目录下的文件“ListView.Table”,“示例二十二”的窗口为例, ~~~~~精确控制行的拖动行为 由于在实际运用中并不需要用listview显示员工列表,而是直接显示活动1,2,3等等,设计时我的思路是这样的:
1、先在活动1的LVW1中以员工列表的显示方式显示出所有人员:
For Each dr As DataRow In DataTables("员工").Select("","性别") \'列出所有员工
For Each nm As String In nms If nm > "" Then Dim vr As WinForm.ListViewRow = lvw2.Rows.Add() vr.Text = nm vr.Name = nm vr.ImageKey = lvw1.Rows(nm).ImageKey \'从员工列表(ListView1)获取此员工的图标键值 End If Next
3、最后让LVW1和下表中的活动1人员进行对比,删除与活动1不同的项目,然后写出了这种东西
Dim nms() As String = DataTables("活动").DataRows(0)("参与者").Split(",") \'列出活动一人员 For Each nm As String In nms
请问老师这功能该怎么实现,显然我的代码是有问题的,菜鸟才学疏浅,如何才能让LVW1的全部员工里只留下活动1的人呢~~~
|
-- 作者:有点蓝 -- 发布时间:2016/9/19 11:15:00 -- 增加的时候就直接筛选掉 For Each dr As DataRow In DataTables("员工").Select("姓名 in (\'" & DataTables("活动").DataRows(0)("参与者").replace(",","\',\'") & "\')","性别") \'列出所有员工 Dim vr As WinForm.ListViewRow = lvw1.Rows.Add() vr.Text = dr("姓名") vr.Name = dr("姓名") \'将ListViewRow的Name属性设置为员工姓名 If dr("性别") = "男" Then vr.ImageKey = "Man" Else vr.ImageKey = "Woman" End If Next |
-- 作者:沦落深蓝 -- 发布时间:2016/9/19 12:38:00 -- ~~~~非常感谢老师~~~~这个筛选条件对于菜鸟的我来说自己写有点困难,但我会好好学习研究的 ![]() |
-- 作者:沦落深蓝 -- 发布时间:2016/9/19 13:31:00 -- 老师~~~存在一个问题~~~由于条件直接过滤了不在活动1的成员,第二次重新打开时,活动2以后的成员在引用图标键值时找不到对象了~~~~怎么办?? 然后活动二除了一个没图标的名字外,什么都没有了~~~
vr.ImageKey = lvw1.Rows(nm).ImageKey \'从待命(ListView1)获取此员工的图标键值
错误:未将对象引用设置到对象的实例。 |
-- 作者:沦落深蓝 -- 发布时间:2016/9/19 13:57:00 -- 先说说我自己的解决办法~~~如果老师有好的请教我:
第一次生成LVW1时全部成员生成,在加载完活动2,3等后,再添加代码 lvw1.Columns.Clear 然后将筛选的LVW1重新载入~~~~测试可行 |
-- 作者:沦落深蓝 -- 发布时间:2016/9/19 14:25:00 -- 老师还有一个问题,由于我是放在页面集合里的Listview,每次执行SelectedIndexChanged 时(也就是来回切换页面时),每次每个listview数据都会变成两倍,这个该怎么办 ![]() [此贴子已经被作者于2016/9/19 14:26:04编辑过]
|
-- 作者:有点蓝 -- 发布时间:2016/9/19 15:38:00 -- 代码放到afterload |
-- 作者:沦落深蓝 -- 发布时间:2016/9/19 21:10:00 -- 感谢老师~~~同时我还找到一个解决办法,多用几次这个lvw1.Columns.Clear就行了,当然还是老师的办法好 ![]() |