以文本方式查看主题

-  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("","性别") \'列出所有员工
    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


2、然后将其他活动2,3等添加(LVW2,LVW3)

Dim nms() As String = DataTables("活动").DataRows(1)("参与者").Split(",") \'列出活动二参与者
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不同的项目,然后写出了这种东西

 

 
此主题相关图片如下:无标题.png
按此在新窗口浏览图片

 Dim nms() As String = DataTables("活动").DataRows(0)("参与者").Split(",") \'列出活动一人员

    For Each nm As String In nms
        If lvw1.Rows.Contains(nm) Then
        Else
            lvw1.Rows.Delete(nm)
        End If
    Next

 

 

请问老师这功能该怎么实现,显然我的代码是有问题的,菜鸟才学疏浅,如何才能让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就行了,当然还是老师的办法好图片点击可在新窗口打开查看