Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口“ListView1”显示数据


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

主题:[求助]窗口“ListView1”显示数据

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
[求助]窗口“ListView1”显示数据  发帖心情 Post By:2019/6/4 8:49:00 [只看该作者]

老师好。想实现,将生日到期员工的信息显示在窗体的“ListView1”中。

请老师帮助:1、如何将下面分别取自帮助和示例中的代码整合在一起,并在ListView1”显示生日到期员工信息。
                 2、“ListView1”控件中的“第一列”,也就是“编号”列,已经设置了居中显示但运行结果却“居不了中” 

代码一:取自“帮助”中的生日到期提醒代码
Dim dide As String
Dim dnam As String 
Dim ts As Integer = 6      '未来天数,含今天,所以实际是未来7天
For Each dr As DataRow In DataTables("员工").DataRows      '循环指定表的所有行
    Dim dt As Date = dr("出生日期")      '记录出生日期
    Dim dt1 As New Date(Date.Today.Year,dt.Month,dt.Day)  
    Dim dt2 As  New Date(Date.Today.AddDays(ts).Year,dt.Month,dt.Day)  '给日期值加上指定的天数[AddDays(n)]
    If (dt1 >= Date.Today AndAlso dt1 < Date.Today.AddDays(ts)) OrElse (dt2 >= Date.Today AndAlso dt2 < Date.Today.AddDays(ts)) Then 
        dide = dide & "," & dr("_Identify")    '记录行号
        dnam = dnam & "," & dr("姓名")    '记录姓名
    End If
Next
If dide > "" Then      '如果符合条件的行不止一行
    dide = dide.Trim(",")      '加入","逗号分隔符
    dnam = dnam.Trim(",")      '加入","逗号分隔符
    Messagebox.Show("未来 "& ts & " 天内是【" & dide & "】的生日,给他们送去祝福吧.","生日提醒")
    Messagebox.Show("未来 "& ts & " 天内是【" & dnam & "】的生日,给他们送去祝福吧.","生日提醒")
    Tables("员工").Filter = "[_Identify] In (" & dide &")"          '设置过滤条件表达式
End If


代码二:取自“示例文件”,(在"ListView1"显示员工信息)但显示的是表中的全部员工的信息,如何修改才能显示“代码一”中的生日到期员工的信息
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Images.Clear() '清除之前的图片
lvw.Rows.Clear() '清除之前的行
lvw.View = ViewMode.Details  '显示模式为详细内容
lvw.GridLines = True '显示网格线
Dim cls() As String = {"编号","姓名","性别","出生日期","部门","职务"} '指定要显示的各列 
Dim wds() As Integer = {100,68,36,72,80,132} '定义列宽    
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
lvw.Columns("编号").TextAlign = HorizontalAlignment.Center '编号列居中对齐    这行已设置“居中”,但实际却居不了中
lvw.Columns("姓名").TextAlign = HorizontalAlignment.Center '姓名列居中对齐
lvw.Columns("性别").TextAlign = HorizontalAlignment.Center '性别列居中对齐
lvw.Columns("出生日期").TextAlign = HorizontalAlignment.Center '出生日期列居中对齐
lvw.Columns("部门").TextAlign = HorizontalAlignment.Center '部门列居中对齐
lvw.Columns("职务").TextAlign = HorizontalAlignment.Center '职务列居中对齐
'For Each dr As DataRow In DataTables("员工").DataRows
    Dim vr As WinForm.ListViewRow = lvw.Rows.Add() '在ListView增加一行
    For Each cl As WinForm.ListViewColumn In lvw.Columns '逐列取值
        vr(cl.name) = dr(cl.name)
    Next
Next
lvw.ResumeRedraw() '恢复绘制
[此贴子已经被作者于2019/6/4 9:01:01编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/4 9:28:00 [只看该作者]

1、把

 

For Each dr As DataRow In DataTables("员工").DataRows

 

改成

 

'For Each dr As DataRow In DataTables("员工").select("[_Identify] In (" & dide &")")

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/4 9:32:00 [只看该作者]

 

2、第一列就是不能居中的,你可以把第一列的宽度设置成0,然后把第二列弄成编号列,即可。

 

 


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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/4 10:44:00 [只看该作者]

For Each dr As DataRow In DataTables("员工").DataRows

改为:For Each dr As DataRow In DataTables("员工").select("[_Identify] In (" & dide &")") 

语法错误: 语法错误:“,”运算符前缺少操作数。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/4 11:05:00 [只看该作者]

Dim dide As String
Dim dnam As String
Dim ts As Integer = 6      '未来天数,含今天,所以实际是未来7天
For Each dr As DataRow In DataTables("员工").DataRows      '循环指定表的所有行
    Dim dt As Date = dr("出生日期")      '记录出生日期
    Dim dt1 As New Date(Date.Today.Year,dt.Month,dt.Day)
    Dim dt2 As  New Date(Date.Today.AddDays(ts).Year,dt.Month,dt.Day)  '给日期值加上指定的天数[AddDays(n)]
    If (dt1 >= Date.Today AndAlso dt1 < Date.Today.AddDays(ts)) OrElse (dt2 >= Date.Today AndAlso dt2 < Date.Today.AddDays(ts)) Then
        dide = dide & "," & dr("_Identify")    '记录行号
        dnam = dnam & "," & dr("姓名")    '记录姓名
    End If
Next
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Images.Clear() '清除之前的图片
lvw.Rows.Clear() '清除之前的行
lvw.View = ViewMode.Details  '显示模式为详细内容
lvw.GridLines = True '显示网格线
Dim cls() As String = {"编号","姓名","性别","出生日期","部门","职务"} '指定要显示的各列
Dim wds() As Integer = {100,68,36,72,80,132} '定义列宽
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
lvw.Columns("编号").TextAlign = HorizontalAlignment.Center '编号列居中对齐    这行已设置"居中",但实际却居不了中
lvw.Columns("姓名").TextAlign = HorizontalAlignment.Center '姓名列居中对齐
lvw.Columns("性别").TextAlign = HorizontalAlignment.Center '性别列居中对齐
lvw.Columns("出生日期").TextAlign = HorizontalAlignment.Center '出生日期列居中对齐
lvw.Columns("部门").TextAlign = HorizontalAlignment.Center '部门列居中对齐
lvw.Columns("职务").TextAlign = HorizontalAlignment.Center '职务列居中对齐


If dide > "" Then      '如果符合条件的行不止一行
    dide = dide.Trim(",")      '加入","逗号分隔符
    dnam = dnam.Trim(",")      '加入","逗号分隔符
    Messagebox.Show("未来 "& ts & " 天内是【" & dide & "】的生日,给他们送去祝福吧.","生日提醒")
    Messagebox.Show("未来 "& ts & " 天内是【" & dnam & "】的生日,给他们送去祝福吧.","生日提醒")
    msgbox(dide)
    For Each dr As DataRow In DataTables("员工").Select("[_Identify] In (" & dide &")")
        Dim vr As WinForm.ListViewRow = lvw.Rows.Add() '在ListView增加一行
        For Each cl As WinForm.ListViewColumn In lvw.Columns '逐列取值
            vr(cl.name) = dr(cl.name)
        Next
    Next
   
End If

lvw.ResumeRedraw() '恢复绘制


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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/4 16:14:00 [只看该作者]

谢谢老师。再请教老师,如果想让天生日员工的那一行用蓝底白字显示,类似下面的代码要如何修改。

    If dr("宗教") = "东正教" Then '用蓝底白字整行显示东正教国家
        vr.BackColor = Color.Blue
        Vr.ForeColor = Color.White
    End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/4 17:14:00 [只看该作者]

    If format(dr("出生日期"), "MMdd") = format(date.today, "MMdd") Then '用蓝底白字整行显示东正教国家
        vr.BackColor = Color.Blue
        Vr.ForeColor = Color.White
    End If

 回到顶部