Foxtable(狐表)用户栏目专家坐堂 → 关于ListView的显示问题


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

主题:关于ListView的显示问题

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


加好友 发短信
等级:一尾狐 帖子:437 积分:2949 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2019/4/12 22:52:00 [显示全部帖子]

Dim cj As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim dm As WinForm.ComboBox = e.Form.Controls("ComboBox2")
If cj.text <> Nothing AndAlso dm.text <> Nothing Then
    Dim dt As DataTable = DataTables("箱单数据")
    Dim drs = dt.Select("款号 = '" & dm.Text & "'and 合同号 like '%" & cj.Text & "%'", "_sortkey")
    Dim ggs = dt.GetValues("规格", "款号 = '" & dm.Text & "'and 合同号 like '%" & cj.Text & "%'", "_sortkey")
    Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
    lvw.StopRedraw() '暂停绘制
    lvw.Columns.Clear() '清除原来的列
    lvw.Rows.Clear() '清除原来的行
    lvw.View = ViewMode.Details '显示模式为详细信息
    lvw.GridLines = True '显示网格线
    Dim cls() As String = {"颜色","箱号"} '定义列名
    Dim wds() As String = {120,100} '定义列宽
    For i As Integer = 0 To  cls.Length - 1  '增加列
        Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
        c.Text = cls(i) '指定列标题
        c.Name = cls(i) '指定列名
        c.Width = wds(i) '指定列宽
    Next
    For Each gg As String In ggs
        Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
        c.Text = gg
        c.Name = gg
        c.Width = 30
    Next
    cls = new String() {"箱数","数量"} '定义列名
    wds = new String()  {40,40} '定义列宽
    For i As Integer = 0 To  cls.Length - 1  '增加列
        Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
        c.Text = cls(i) '指定列标题
        c.Name = cls(i) '指定列名
        c.Width = wds(i) '指定列宽
    Next
   
    Dim pdr As DataRow = Nothing
    Dim xs As Double = 0
    Dim xhs As String = ""
    Dim sl As Double = 0
    Dim pr As object = Nothing
    For Each dr As DataRow In drs
        If pdr Is Nothing OrElse pdr("规格") <> dr("规格") OrElse pdr("颜色") <> dr("颜色") OrElse pdr("数量") <> dr("数量")Then
            If pr IsNot Nothing Then
                pr("箱号") = xhs.trim("-")
                pr(pdr("规格")) = dr("数量")
                pr("箱数") = xs
                pr("数量") = sl
            End If
            Dim r As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
            r("颜色") = dr("颜色")
            xhs = dr("箱号")
            xs = 1
            sl = dr("数量")
            pr = r
        Else
            xhs &= "-" & dr("箱号")
            xs += 1
            sl += dr("数量")
        End If
        pdr = dr
    Next
For Each dr As DataRow In drs
    If pr IsNot Nothing Then
        pr("箱号") = xhs.trim("-")
        pr(pdr("规格")) = dr("数量")
        pr("箱数") = xs
        pr("数量") = sl
    End If
Next
    lvw.ResumeRedraw
End If

 

 


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

 

怎么显示的数据错误?


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


加好友 发短信
等级:一尾狐 帖子:437 积分:2949 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2019/4/14 20:46:00 [显示全部帖子]

我需要的是dtb.AddDef("规格_" & v , Gettype(Double))多表头

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


加好友 发短信
等级:一尾狐 帖子:437 积分:2949 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2019/4/16 23:10:00 [显示全部帖子]

Dim de As Table = Tables("临时箱单")
Dim Book As New XLS.Book
Dim Sheet As XLS.Sheet = Book.Sheets(0)
With Sheet.PrintSetting
    .AutoScale = True '自动缩放
    .FitPagesAcross = 1 '垂直方向缩为1页
End With
Dim Style As XLS.Style = Book.NewStyle() '定义新样式
Dim styel1 As XLS.Style = Book.NewStyle() '定义新样式
styel1.font = New Font("微软雅黑", 16)
Dim styel2 As XLS.Style = Book.NewStyle() '定义新样式
styel2.font = New Font("微软雅黑", 12)
Style.BorderTop = XLS.LineStyleEnum.Thin
Style.BorderBottom = XLS.LineStyleEnum.Thin
Style.BorderLeft = XLS.LineStyleEnum.Thin
Style.BorderRight = XLS.LineStyleEnum.Thin
styel1.BorderTop = XLS.LineStyleEnum.Thin
styel1.BorderBottom = XLS.LineStyleEnum.Thin
styel1.BorderLeft = XLS.LineStyleEnum.Thin
styel1.BorderRight = XLS.LineStyleEnum.Thin
styel2.BorderTop = XLS.LineStyleEnum.Thin
styel2.BorderBottom = XLS.LineStyleEnum.Thin
styel2.BorderLeft = XLS.LineStyleEnum.Thin
styel2.BorderRight = XLS.LineStyleEnum.Thin
Style.BorderColorTop = Color.Black
Style.BorderColorBottom = Color.Black
Style.BorderColorLeft = Color.Black
Style.BorderColorRight = Color.Black
styel1.BorderColorTop = Color.Black
styel1.BorderColorBottom = Color.Black
styel1.BorderColorLeft = Color.Black
styel1.BorderColorRight = Color.Black
styel2.BorderColorTop = Color.Black
styel2.BorderColorBottom = Color.Black
styel2.BorderColorLeft = Color.Black
styel2.BorderColorRight = Color.Black
Sheet.Rows(0).Height = 70 '设置第1行的行高
styel1.WordWrap = True
styel2.AlignHorz = XLS.AlignHorzEnum.Center
styel2.AlignVert = XLS.AlignVertEnum.Center
styel1.AlignHorz = XLS.AlignHorzEnum.Center
styel1.AlignVert = XLS.AlignVertEnum.Center
Style.AlignHorz = XLS.AlignHorzEnum.Center
Style.AlignVert = XLS.AlignVertEnum.Center
de.CreateSheetHeader(Sheet,1,0,True)'生成表头
Sheet(0,0).Value = "产品销售统计" & vbcrlf & "箱单"
For r As Integer = 0 To de.Rows.Count - 1 '填入数据
    For c As Integer = 0 To de.Cols.Count -1
        Sheet.Cols(0).Width = 120
        Sheet.Cols(1).Width = 120
        Sheet.Cols(2).Width = 70
        Sheet.Cols(3).Width = 120
        For a As Integer = 4 To de.Cols.Count -3
            Sheet.Cols(a).Width = 30 '设置第1列的宽度
        Next
        For a As Integer = de.Cols.Count -2 To de.Cols.Count -1
            Sheet.Cols(a).Width = 60 '设置第1列的宽度
        Next
        Sheet(0,0).Style = styel1
        Sheet.MergeCell(0,0,1,c+1)
        If de.rows(r)(c) = Nothing Then
            Sheet(r +3 , c).Value = Nothing
        Else
            Sheet(r +3 , c).Value = de.rows(r)(c)
        End If
        Sheet(r +3, c).Style = Style
        Sheet(0,c).Style = Style
        Sheet(1,c).Style = Style
        Sheet(2,c).Style = Style
        Sheet(1,c).Style = styel2
        Sheet(2,c).Style = styel2
        Dim Sum As Double= de.Compute("Sum(数量)")
        Dim Sum3 As Double = de.Compute("Sum(箱数)")
        Dim Sum1 As Integer
        Dim Sum2 As Integer
        sum1 = de.Cols.Count
        sum2 = de.Rows.Count
        Dim dtd As DataTable = DataTables("临时箱单")
        Dim dre = dtd.Select("款号 = '" & dm.Text & "'and 合同号 like '%" & cj.Text & "%'")
        For Each drf As DataRow In dre
            Sum = Sum + drf("数量")
            Sum3 = Sum3 + drf("箱数")
            Sheet(sum1+2, 0).Value = "合计:"
            Sheet(sum1+2, sum2).Value = sum
            Sheet(sum1+2, sum2-1).Value = sum3
        Next
    Next
Next
Book.Save("c:\reports\test.xls")
Dim Proc As New Process
Proc.File = "c:\reports\test.xls"
Proc.Start()

问题解决

 回到顶部