以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  listview怎么去掉详细信息?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=176714)

--  作者:wukangppbb
--  发布时间:2022/4/24 11:13:00
--  listview怎么去掉详细信息?
老师,listview怎么去掉详细信息?直接在“生成”这个按钮里面实现呢?


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


Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() \'暂停绘制
lvw.Columns.Clear() \'清除原来的列
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.Details \'显示模式为详细信息
lvw.GridLines = True \'显示网格线
Dim cls() As String = {"国家","人口","面积","语言","宗教","洲"} \'指定要显示的各列 
Dim wds() As Integer = {100,100,130,80,80,80} \'定义列宽 
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("人口").Text = "人口(万)" \'修改人口列的标题 
lvw.Columns("人口").TextAlign = HorizontalAlignment.Right \'人口列靠右对齐
lvw.Columns("面积").TextAlign = HorizontalAlignment.Right \'面积列靠右对齐
For Each dr As DataRow In DataTables("国家").DataRows \'从数据表中提取数据
    Dim Key As String = dr("图标")
    Dim r As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
    lvw.Images.AddImage(Key, Key & ".ico", Key & "48.ico") \'添加代表这个国家的一对图标
    r.ImageKey = Key \'指定图标键值
    For Each cl As String In cls \'逐列取值
        Select Case cl
            Case "人口","面积" \'如果是人口列或面积列
                r(cl) = format(dr(cl),"#,000") \'则显示千位分割符号
            Case Else
                r(cl) = dr(cl)
        End Select
    Next
Next
lvw.ResumeRedraw() \'恢复绘制




If e.Sender.Checked = True Then
    Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
    lvw.View = ViewMode.Details \'显示模式切换为详细内容
End If

--  作者:有点蓝
--  发布时间:2022/4/24 11:20:00
--  
按钮里默认显示模式就是详细内容啊,不需要详细信息勾选,直接去掉即可
--  作者:wukangppbb
--  发布时间:2022/4/24 11:38:00
--  我这么写存在空值,是哪里错误了?
我这么写取到空值,是哪里错误了?

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() \'暂停绘制
lvw.Columns.Clear() \'清除原来的列
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.Details \'显示模式为详细信息
lvw.GridLines = True \'显示网格线
Dim cls() As String = {"客户地区","客户代码","客户名称","客户联系电话","客户等级"} \'指定要显示的各列 
Dim wds() As Integer = {100,100,130,80,80,80} \'定义列宽 
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 dr As DataRow In DataTables("订单").DataRows \'从数据表中提取数据
Dim r As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
       For Each cl As String In cls \'逐列取值
        Select Case cl
            Case "cl"
                r(cl) = dr(cl)
        End Select
    Next
Next
lvw.ResumeRedraw() \'恢复绘制

--  作者:有点蓝
--  发布时间:2022/4/24 11:40:00
--  
For Each dr As DataRow In DataTables("订单").DataRows \'从数据表中提取数据
Dim r As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
       For Each cl As String In cls \'逐列取值
        r(cl) = dr(cl)
    Next
Next

--  作者:wukangppbb
--  发布时间:2022/4/24 13:42:00
--  怎么写这个确定按钮?
怎么写这个确定按钮? 点击“确定”,勾选好的,订单客户名称填充到“客户评估表”里面的“订单客户”列里面,华南客户名称填充到“华南客户列”里面。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:动态选择地区.table



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


--  作者:有点蓝
--  发布时间:2022/4/24 13:54:00
--  
参考:http://www.foxtable.com/webhelp/topics/2778.htm

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:动态选择地区 (2).zip



--  作者:wukangppbb
--  发布时间:2022/4/24 16:34:00
--  多选框输入
老师,其实我是下图这么一个需求,我改了代码,是可以输入了。
但是有个需求,复选的内容写入“客户评估”表的时候,是用“,”分开全部汇总写在一个单元格里面,而不是每一个复选占用一个单元格。
比如,复选了listview1里面的华北,华南的客户,客户名称汇总显示在一个单元格。
这样。“确定”按钮应该怎么写?


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


Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim vls As String = ""
Dim dr As DataRow
For Each vr As WinForm.ListViewRow In lvw.CheckedRows
    dr = DataTables("客户评估").Find("订单客户 is  null")
    If dr Is Nothing Then
    dr = DataTables("客户评估").AddNew
    End If
    dr("订单客户") = vr("客户名称")
Next

Dim lvw2 As WinForm.ListView = e.Form.Controls("ListView2")
Dim vls2 As String = ""
Dim dr2 As DataRow
For Each vr As WinForm.ListViewRow In lvw2.CheckedRows
    dr2 = DataTables("客户评估").Find(vr("地区") & "客户 is  null")
    If dr2 Is Nothing Then
        dr2 = DataTables("客户评估").AddNew
    End If
    dr2(vr("地区") & "客户") = vr("客户名称")
Next
Dim lst As new List(of String)
Tables("客户评估").Current("订单客户") = String.Join(",",lst.ToArray)
Tables("客户评估").Current("华南客户") = String.Join(",",lst.ToArray)

forms("客户评估").close

--  作者:有点蓝
--  发布时间:2022/4/24 16:40:00
--  
填好的数据是怎么样的?请举例说明
--  作者:wukangppbb
--  发布时间:2022/4/24 17:07:00
--  就是这么一个效果
就是这么一个效果


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




[此贴子已经被作者于2022/4/26 17:12:02编辑过]

--  作者:有点蓝
--  发布时间:2022/4/24 17:14:00
--  
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim vls As String = ""
Dim dr As DataRow = DataTables("客户评估").AddNew
For Each vr As WinForm.ListViewRow In lvw.CheckedRows
    vls = vls & "," vr("客户名称")
Next
dr("订单客户") = vls.trim(",")