Foxtable(狐表)用户栏目专家坐堂 → [求助]ListView拖动行为下的选择性删除问题


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

主题:[求助]ListView拖动行为下的选择性删除问题

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


加好友 发短信
等级:幼狐 帖子:170 积分:1195 威望:0 精华:0 注册:2016/2/21 18:26:00
[求助]ListView拖动行为下的选择性删除问题  发帖心情 Post By:2016/9/19 10:39:00 [只看该作者]

请教老师~~~在学习运用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的人呢~~~

 

 



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


加好友 发短信
等级:超级版主 帖子:109406 积分:556686 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

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


加好友 发短信
等级:幼狐 帖子:170 积分:1195 威望:0 精华:0 注册:2016/2/21 18:26:00
  发帖心情 Post By:2016/9/19 12:38:00 [只看该作者]

~~~~非常感谢老师~~~~这个筛选条件对于菜鸟的我来说自己写有点困难,但我会好好学习研究的图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:170 积分:1195 威望:0 精华:0 注册:2016/2/21 18:26:00
  发帖心情 Post By:2016/9/19 13:31:00 [只看该作者]

老师~~~存在一个问题~~~由于条件直接过滤了不在活动1的成员,第二次重新打开时,活动2以后的成员在引用图标键值时找不到对象了~~~~怎么办??

然后活动二除了一个没图标的名字外,什么都没有了~~~

 

vr.ImageKey = lvw1.Rows(nm).ImageKey '从待命(ListView1)获取此员工的图标键值

 

错误:未将对象引用设置到对象的实例。



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


加好友 发短信
等级:幼狐 帖子:170 积分:1195 威望:0 精华:0 注册:2016/2/21 18:26:00
  发帖心情 Post By:2016/9/19 13:57:00 [只看该作者]

先说说我自己的解决办法~~~如果老师有好的请教我:

 

第一次生成LVW1时全部成员生成,在加载完活动2,3等后,再添加代码

lvw1.Columns.Clear

然后将筛选的LVW1重新载入~~~~测试可行

图片点击可在新窗口打开查看


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


加好友 发短信
等级:幼狐 帖子:170 积分:1195 威望:0 精华:0 注册:2016/2/21 18:26:00
  发帖心情 Post By:2016/9/19 14:25:00 [只看该作者]

老师还有一个问题,由于我是放在页面集合里的Listview,每次执行SelectedIndexChanged 时(也就是来回切换页面时),每次每个listview数据都会变成两倍,这个该怎么办图片点击可在新窗口打开查看
[此贴子已经被作者于2016/9/19 14:26:04编辑过]

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


加好友 发短信
等级:超级版主 帖子:109406 积分:556686 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/19 15:38:00 [只看该作者]

代码放到afterload

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


加好友 发短信
等级:幼狐 帖子:170 积分:1195 威望:0 精华:0 注册:2016/2/21 18:26:00
  发帖心情 Post By:2016/9/19 21:10:00 [只看该作者]

感谢老师~~~同时我还找到一个解决办法,多用几次这个lvw1.Columns.Clear就行了,当然还是老师的办法好图片点击可在新窗口打开查看

 回到顶部