以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  还是打印的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92104)

--  作者:天蝉一线
--  发布时间:2016/10/26 11:16:00
--  还是打印的问题
这是我的代码:
 Dim doc As New PrintDoc \'定义一个报表
    Dim rt As New prt.RenderTable() \'定义一个表格对象
    Dim rx As New prt.RenderText \'定义一个文本对象
    Dim rz As New prt.RenderText \'定义一个文本对象
      \'加入标题
    doc.Body.Children.Add(rt) \'加入到报表中
    rt.Style.GridLines.All = New prt.Linedef  \'设置网格线
    rt.CellStyle.Spacing.All = 1 \'内容距离网格线1毫米
    
    rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center
    rt.Cells(0,0).text = _Userdwmc & "大额资金支出上会提案表"
    rt.Cells(0,0).SpanCols = 11 \'合并第一行全部单元格,用于显示主标题
    rt.Cells(0,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'主标题居中
    rt.Cells(0,0).Style.Font = New Font("宋体", 16, FontStyle.Bold) \'设置主标题字体
    rt.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) \'去掉第一行的网格线
   rt.Rows(1).Height = 8 
 rt.cells(6,0).Text ="大额资金支付备案编码"  \'设置第一行第一个单元格的内容
rt.Cells(6,1).Text = "申报部门名称"  \'设置第一行第四个单元格的内容
rt.cells(6,2).Text = "填报人"  \'设置第一行第一个单元格的内容
rt.Cells(6,3).Text = "付款单位账户名称"  \'设置第一行第四个单元格的内容
rt.cells(6,4).Text = "收款单位账户名称"  \'设置第一行第一个单元格的内容
rt.Cells(6,5).Text = "支付性质"  \'设置第一行第四个单元格的内容
rt.Cells(6,6).Text = "支付项目名称和内容"  \'设置第一行第四个单元格的内容
rt.cells(6,7).Text = "支付金额"  \'设置第一行第一个单元格的内容
rt.Cells(6,8).Text = "提前支付时间"  \'设置第一行第四个单元格的内容
rt.cells(6,9).Text = "提前支付理由"  \'设置第一行第一个单元格的内容
rt.Cells(6,10).Text = "本单位过会时间"  \'设置第一行第四个单元格的内容
     Dim rw As New prt.RenderArea
    Dim rn As prt.RenderText
    rw.Width = 250 \'宽度等于分栏宽度
    rw.Height = 30 \'高度24毫米
    rw.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割
    rw.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割
    rw.Style.Spacing.Bottom = 2
    rn = New prt.RenderText
    rn.Text = "过会提案编码:"
    rn.X = 2
    rn.Y = 2
    rw.Children.Add(rn) \'添加到容器中
    
    rn = New prt.RenderText
    rn.Text = jlbh
    rn.X = 25
    rn.Y = 2
    rw.Children.Add(rn)
    
    rn = New prt.RenderText
    rn.Text = "过会时间:"
    rn.X = 2
    rn.Y = "Prev.Bottom + 2" \'垂直坐标位于迁移对象之下的2毫米
    rw.Children.Add(rn)
    
    rn = New prt.RenderText
    rn.Text =ghsj
    rn.X = 25
    rn.Y = "Prev.Top" \'垂直坐标和前一对象相同
    rw.Children.Add(rn)
    
    rn = New prt.RenderText
    rn.Text = "过会类型:"
    rn.X = 2
    rn.Y = "Prev.Bottom + 2" \'垂直坐标位于迁移对象之下的2毫米
    rw.Children.Add(rn)
    
    rn = New prt.RenderText
    rn.Text = ghlx
    rn.X = 25
    rn.Y = "Prev.Top" \'垂直坐标和前一对象相同
    rw.Children.Add(rn)
    
    rn = New prt.RenderText
    rn.Text = "会议记录人:"
    rn.X = 2
    rn.Y = "Prev.Bottom + 6" \'垂直坐标位于迁移对象之下的2毫米
    rw.Children.Add(rn)
    
    rn = New prt.RenderText
    rn.Text = hyjlr
    rn.X = 25
    rn.Y = "Prev.Top" \'垂直坐标和前一对象相同
    rw.Children.Add(rn)
    
    rn = New prt.RenderText
    rn.Text = "会议主持人:"
    rn.X = 120
    rn.Y = 2
    rw.Children.Add(rn) \'添加到容器中
    
    rn = New prt.RenderText
    rn.Text = hyzcr
    rn.X = 150
    rn.Y = 2
    rw.Children.Add(rn)
    
    rn = New prt.RenderText
    rn.Text = "参加会议人员:"
    rn.X = 120
    rn.Y = "Prev.Bottom + 6"
    rw.Children.Add(rn) \'添加到容器中
    
    rn = New prt.RenderText
    rn.Text = cjhyry
    rn.X = 145
    rn.Y = "Prev.Top"
    rw.Children.Add(rn)
    
    rn = New prt.RenderText
    rn.Text = "列席:"
    rn.X = 120
    rn.Y = "Prev.Bottom + 8"
    rw.Children.Add(rn) \'添加到容器中
    
    rn = New prt.RenderText
    rn.Text = lx
    rn.X = 145
    rn.Y = "Prev.Top"
    rw.Children.Add(rn)
    rt.Cells(1,0).Area .Children.Add (rw)
    \'rt.Cells(1,1).text = "jlbh"
    rt.Cells(1,0).SpanCols = 11 \'合并第一行全部单元格,用于显示主标题
    rt.Rows(1).Style.Borders.All = New prt.LineDef("0mm", Color.white) \'去掉第二行的网格线
    rt.Rows(1).Style.Borders.Bottom = New prt.Linedef  \'恢复第二行底端的网格线
    rt.Rows(1).Height = 30 \'设置第二行的高度,拉开和表格主体的距离.
    rt.RowGroups(0,6).Header = prt.TableHeaderEnum.All  \'前四行作为表头
    Dim dt As DataTable
    Dim shjg As String = "审核通过"
    Dim g As New GroupTableBuilder("统计表1", DataTables("大额资金支出备案登记表"),"审核结果=\'" & shjg & "\'and 过会提案编码 = \'" & jlbh & "\'")
    g.Groups.AddDef("大额资金支付备案编码","大额资金支付备案编码") \'根据根据用户账号分组
    g.Groups.AddDef("部门名称","申报部门名称") \'根据根据用户账号分组
    g.Groups.AddDef("用户姓名","填报人") \'根据用户姓名分组
    g.Groups.AddDef("付款单位账户名称","付款单位账户名称") \'根据用户姓名分组
    g.Groups.AddDef("收款单位账户名称","收款单位账户名称") \'根据用户姓名分组
    g.Groups.AddDef("支付性质","支付性质") \'根据用户姓名分组
    g.Groups.AddDef("支付项目名称和内容","支付项目名称和内容") \'根据用户姓名分组
    g.Groups.AddDef("支付金额","支付金额") \'根据用户姓名分组
    g.Groups.AddDef("需要提前支付时间",DateGroupEnum.none,"提前支付时间") \'根据用户姓名分组
    g.Groups.AddDef("提前支付理由","提前支付理由") \'根据用户姓名分组
    g.Groups.AddDef("本单位过会时间",DateGroupEnum.none,"本单位过会时间")\'根据用户姓名分组
    g.FromServer = True
    DT=g.build(True)
    dt.DataCols("提前支付时间").SetDateTimeFormat(DateTimeFormatEnum.DateTime)
    dt.DataCols("本单位过会时间").SetDateTimeFormat(DateTimeFormatEnum.DateTime)
   \' Dim rt1 As New prt.RenderTable
Dim Count As Integer =0
              For Each Col As DataCol In Dt.DataCols
                rt.Cells(6,Count).Text = Col.Name
            For r As Integer = 1 To dt.DataRows.Count - 2
                rt.Cells(r +1,Count).Text =dt.dataRows(r)(Col.Name)
            Next
            Count = Count + 1
Next
     doc.Preview()

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20161026111328.png
图片点击可在新窗口打开查看
图片上显示的表格的地方没有显示黄色代码的部分,也就是表格列标题,还有就是表格里面的数据少了数据表的第一行数据,而是从第二行显示的。麻烦您看看代码哪个地方不对?


--  作者:有点蓝
--  发布时间:2016/10/26 12:05:00
--  
试试For r As Integer = 1 改为For r As Integer = 6
......
For Each Col As DataCol In Dt.DataCols
    rt.Cells(6,Count).Text = Col.Name
    For r As Integer = 6 To dt.DataRows.Count - 2
        rt.Cells(r +1,Count).Text =dt.dataRows(r)(Col.Name)
    Next
    Count = Count + 1
Next

......

--  作者:天蝉一线
--  发布时间:2016/10/26 13:50:00
--  
不行呀,列标题有了,但是数据显示少了前6个。
--  作者:天蝉一线
--  发布时间:2016/10/26 13:53:00
--  
还有问题,就是列标题只显示在了第一页,以后各页就没有了
--  作者:有点蓝
--  发布时间:2016/10/26 14:41:00
--  
......
rt.RowGroups(0,2).Header = prt.TableHeaderEnum.All  \'前二行作为表头
......


For Each Col As DataCol In Dt.DataCols
    rt.Cells(2,Count).Text = Col.Name
    For r As Integer = 2 To dt.DataRows.Count - 2
        rt.Cells(r +1,Count).Text =dt.dataRows(r)(Col.Name)
    Next
    Count = Count + 1
Next

不行就上例子吧