以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  列表页头像问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=136750)

--  作者:ezilu
--  发布时间:2019/6/20 18:46:00
--  列表页头像问题
官方的 ListView.Table   示例二十二  “精确控制行的拖动行为

Dim lvw1 As WinForm.ListView = e.Form.Controls("ListView1") \'员工列表
Dim
lvw2 As WinForm.ListView = e.Form.Controls("ListView2") \'活动一参与者列表
Dim
lvw3 As WinForm.ListView = e.Form.Controls("ListView3") \'活动二参与者列表
Dim
lvws() As Winform.ListView = {lvw1,lvw2,lvw3} \'看看我们是怎样批量设置某组控件属性的
For
Each lvw As WinForm.ListView In lvws
    lvw.View = ViewMode.
List
    lvw.AllowDrag =
True
    lvw.AllowDrop =
True
    lvw.Images.AddSmallImage("Man", "Man.ico")
\'
添加代表男性的一对图标
    lvw.Images.AddSmallImage("Woman", "Woman.ico")
\'
添加代表女性的一对图标

Next
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
Dim
nms() As String = DataTables("活动").DataRows(0)("参与者").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

nms
= DataTables("活动").DataRows(1)("参与者").Split(",") \'列出活动二参与者
For Each
nm As String In nms
    If
nm > "" Then
        Dim
vr As WinForm.ListViewRow = lvw3.Rows.Add()
       
vr.Text = nm
       
vr.Name = nm
       
vr.ImageKey = lvw1.Rows(nm).ImageKey \'从员工列表(ListView1)获取此员工的图标键值
    End If
Next



红色区域的设置 是 针对 男女性别的  生成列表行图片键值  这个好理解

但是我现在想  员工列表不是有 一列  图片列  吗 代表每个员工的图像

现在问题来了  如何实现这种  图片列 设置为 ImageKey

代码反复修改,总是错误 ,  拖动员工 名字显示  但是头像不显示

哦 对了  官方的 vr.Name = nm 设置为姓名  我觉得不妥 一个大的员工体系里面  应该有重复姓名的

我初设了 员工 工号  这个列  可以是唯一的 

如何实现上面这段代码  各位大大   谢谢


--  作者:有点甜
--  发布时间:2019/6/20 22:01:00
--  

比如

 

For Each dr As DataRow In DataTables("员工").Select("","性别") \'列出所有员工
    Dim vr As WinForm.ListViewRow = lvw1.Rows.Add()
    vr.Text = dr("姓名")
    vr.Name = dr("姓名") \'将ListViewRow的Name属性设置为员工姓名   
    lvw.Images.AddSmallImage(vr.Name, ProjectPath & "attachments/" & dr("图片")) \'添加代表男性的一对图标       
    vr.ImageKey = vr.name
    vr.ImageKey = "Woman"   
Next

 

参考 http://www.foxtable.com/webhelp/topics/2775.htm

 

http://www.foxtable.com/webhelp/topics/2776.htm

 


--  作者:ezilu
--  发布时间:2019/6/21 13:15:00
--  
你帮我看看   甜大大  麻烦  谢谢了 
[此贴子已经被作者于2019/6/21 15:53:02编辑过]

--  作者:有点甜
--  发布时间:2019/6/21 15:18:00
--  

Dim bm As String = e.Form.Controls("ComboBox1").Value
Dim rw As String = e.Form.Controls("ComboBox2").Value

Dim lvw1 As WinForm.ListView = e.Form.Controls("ListView1") \'部门组员列表
Dim lvw2 As WinForm.ListView = e.Form.Controls("ListView2") \'星期日参与者列表
Dim lvw3 As WinForm.ListView = e.Form.Controls("ListView3") \'星期一参与者列表
Dim lvw4 As WinForm.ListView = e.Form.Controls("ListView4") \'星期二参与者列表

Dim lvws() As Winform.ListView = {lvw1,lvw2,lvw3,lvw4} \'看看我们是怎样批量设置某组控件属性的
For Each lvw As WinForm.ListView In lvws
    lvw.Rows.Clear() \'清除原来的行
    lvw.Images.Clear() \'清除原来的图片
    lvw.View = ViewMode.LargeIcon
    lvw.AllowDrag = True
    lvw.AllowDrop = True
    For Each r As DataRow In DataTables("员工表").Select("员工工号 is not null")
        lvw.Images.AddLargeImage(r("员工工号"), ProjectPath & "Images/" & r("员工头像")) \'添加代表这个员工的一对图标
    Next
Next

Dim dr As DataRow = DataTables("工作任务表").Find("部门 = \'" & bm & "\' And 任务名称 = \'" & rw & "\'")
If dr IsNot Nothing Then
   
    Dim wz As Integer = Tables("工作任务表").FindRow(dr)
    If wz >= 0 Then
        Tables("工作任务表").Position = wz
    End If
   
    Dim dr1 As DataRow = DataTables("部门").Find("部门 = \'" & bm & "\'")
    Dim zys() As String = dr1("部门人员").split(",")
   
    For Each zy As String In zys \'列出所有组员
        If zy > "" Then
            Dim dr2 As DataRow = DataTables("员工表").Find("员工工号 = \'" & zy & "\'")
            Dim vr As WinForm.ListViewRow = lvw1.Rows.Add()
            vr.Text = dr2("员工姓名")
            vr.Name = zy \'将ListViewRow的Name属性设置为员工工号
            vr.ImageKey = vr.Name \'指定图标键值
        End If
    Next
   
    Dim nms() As String = Tables("工作任务表").Current("一组人员").Split(",") \'列出任务一组成员
    For Each nm As String In nms
        If nm > "" Then
            Dim dr3 As DataRow = DataTables("员工表").Find("员工工号 = \'" & nm & "\'")
            Dim vr As WinForm.ListViewRow = lvw2.Rows.Add()
            vr.Text = dr3("员工姓名")
            vr.Name = nm
            vr.ImageKey = vr.Name \'指定图标键值
        End If
    Next
   
    nms = Tables("工作任务表").Current("二组人员").Split(",") \'列出任务二组成员
    For Each nm As String In nms
        If nm > "" Then
            Dim dr4 As DataRow = DataTables("员工表").Find("员工工号 = \'" & nm & "\'")
            Dim vr As WinForm.ListViewRow = lvw3.Rows.Add()
            vr.Text = dr4("员工姓名")
            vr.Name = nm
            vr.ImageKey = vr.Name \'指定图标键值
        End If
    Next
   
    nms = Tables("工作任务表").Current("三组人员").Split(",") \'列出任务二组成员
    For Each nm As String In nms
        If nm > "" Then
            Dim dr5 As DataRow = DataTables("员工表").Find("员工工号 = \'" & nm & "\'")
            Dim vr As WinForm.ListViewRow = lvw4.Rows.Add()
            vr.Text = dr5("员工姓名")
            vr.Name = nm
            vr.ImageKey = vr.Name \'指定图标键值
        End If
    Next
   
Else
    Forms("新增部组").Open()
End If


--  作者:ezilu
--  发布时间:2019/6/21 15:53:00
--  
谢谢甜大大