Foxtable(狐表)用户栏目专家坐堂 → listview如何根据类目标中的类名 来循环赋予图片名 精简代码


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

主题:listview如何根据类目标中的类名 来循环赋予图片名 精简代码

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
listview如何根据类目标中的类名 来循环赋予图片名 精简代码  发帖心情 Post By:2022/2/10 16:35:00 [只看该作者]

listview如何根据类目标中的类名 来循环赋予图片名  精简代码【红色部分代码怎么精简呢?】


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看 

 

当前代码如下:

Forms("设备借用归还").StopRedraw
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.Tile  '显示模式为大图标
lvw.Images.LargeSize = New Size(45,55) '定义大图标尺寸
lvw.TitleSize = New Size(150,90)
lvw.Images.AddLargeImage("笔记本", "e3.ico") '添加代表图标
lvw.Images.AddLargeImage("手机", "n1.ico") '添加代表图标
lvw.Images.AddLargeImage("打印机", "k1.ico") '添加代表图标
lvw.Images.AddLargeImage("记录仪", "f3.ico") '添加代表图标
lvw.Images.AddLargeImage("台式机", "e4.ico") '添加代表图标
lvw.Images.AddLargeImage("录音笔", "m4.ico") '添加代表图标
lvw.Images.AddLargeImage("摄像机", "r6.ico") '添加代表图标
lvw.Images.AddLargeImage("照相机", "r9.ico") '添加代表图标
lvw.Images.AddLargeImage("同录设备", "31.ico") '添加代表图标
lvw.Images.AddLargeImage("屏蔽", "e2.ico") '添加代表图标

Dim cls() As String = {"设备标题","用户名","设备状态","记录时间"} '定义列名
Dim wds() As Integer = {100,100,150,100} '定义列宽
For i As Integer = 0 To  cls.Length - 1
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
    c.Name = cls(i) '指定列名
    c.Text = cls(i) '指定标题,这里标题和列名相同
    c.Width = wds(i) '指定列宽
Next

For Each zh As String In DataTables("设备信息").GetValues("设备类别") '增加分组
    Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
    grp.Name = zh
    grp.Text = zh
Next
'Tables("设备信息").Filter=""
Tables("设备信息").Filter="设备状态='借出'"
For Each dr As Row In Tables("设备信息").Rows '从数据表中提取数据
   
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
    For Each cl As String In cls '逐列取值
        vr(cl) = dr(cl)
    Next
    vr.Text = dr("设备型号")  '设置标题
    If dr("设备属性") = "笔记本" Then '设置分组
        vr.ImageKey = "笔记本"
    Else If dr("设备属性") = "记录仪" Then
        vr.ImageKey = "记录仪"
    Else If dr("设备属性") = "手机" Then
        vr.ImageKey = "手机"
    Else If dr("设备属性") = "打印机" Then
        vr.ImageKey = "打印机"
    Else If dr("设备属性") = "台式机" Then
        vr.ImageKey = "台式机"
    Else If dr("设备属性") = "录音笔" Then
        vr.ImageKey = "录音笔"
    Else If dr("设备属性") = "摄像机" Then
        vr.ImageKey = "摄像机"
    Else If dr("设备属性") = "照相机" Then
        vr.ImageKey = "照相机"
    Else If dr("设备属性") = "同录设备" Then
        vr.ImageKey = "同录设备"
    Else If dr("设备属性") = "屏蔽" Then
        vr.ImageKey = "屏蔽"
    End If
    vr.Group = dr("设备类别") '指定所属分组
    vr.Tag= dr '将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
Next
lvw.ResumeRedraw() '恢复绘制
Functions.Execute("设备借用归还统计")
Forms("设备借用归还").ResumeRedraw



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


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/10 16:42:00 [只看该作者]

1、改为

for each nm as string() in DataTables("类目表").GetValues("类名|图标名")
lvw.Images.AddLargeImage(nm(0)nm(1)) '添加代表图标
next

2、改为
vr.ImageKey = dr("设备属性")

 回到顶部