以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]窗口“ListView1”显示数据 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=135831) |
-- 作者:hanzhang98 -- 发布时间:2019/6/4 8:49:00 -- [求助]窗口“ListView1”显示数据 老师好。想实现,将生日到期员工的信息显示在窗体的“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编辑过]
|
-- 作者:有点甜 -- 发布时间: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 &")")
|
-- 作者:有点甜 -- 发布时间:2019/6/4 9:32:00 --
2、第一列就是不能居中的,你可以把第一列的宽度设置成0,然后把第二列弄成编号列,即可。
|
-- 作者:hanzhang98 -- 发布时间: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 &")") |
-- 作者:有点甜 -- 发布时间:2019/6/4 11:05:00 -- Dim dide As String
lvw.ResumeRedraw() \'恢复绘制 |
-- 作者:hanzhang98 -- 发布时间:2019/6/4 16:14:00 -- 谢谢老师。再请教老师,如果想让当天生日员工的那一行用蓝底白字显示,类似下面的代码要如何修改。 If dr("宗教") = "东正教" Then \'用蓝底白字整行显示东正教国家 vr.BackColor = Color.Blue Vr.ForeColor = Color.White End If |
-- 作者:有点甜 -- 发布时间: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
|