Foxtable(狐表)用户栏目专家坐堂 → 【专业报表】怎么实现按照选择行来实现数据的打印呢?


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

主题:【专业报表】怎么实现按照选择行来实现数据的打印呢?

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【专业报表】怎么实现按照选择行来实现数据的打印呢?  发帖心情 Post By:2017/11/11 14:47:00 [显示全部帖子]

【专业报表】怎么实现按照选择行来实现数据的打印呢?
专业表中有多个不同的表格,怎么根据卷宗入库所选择的数据行来实现数据的批量打印呢?
目前怎么操作都只能实现打印当前行,麻烦各位老师多多指导
附上例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:11101 - 副本.zip


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

目前初步采用下面代码实现了(有没有更好的办法呢?)
Dim rs As List(of Row) = Tables("卷宗入库").GetCheckedRows
If rs.Count > 0 Then '如果存在符合条件的行
    Dim doc As New PrintDoc '定义一个报表
    For Each r As Row In rs
       
    
    Dim Rows As List(Of DataRow)
    Dim CurRow As Row = Tables("卷宗入库").Current  ‘怎么修正呢?不然每次都是选择了三行 结果打印的都是当前行三张一模一样的数据 ’
    
    Dim bg As New prt.RenderTable() '定义一个表格对象
    
    bg.Style.GridLines.All = New prt.LineDef '将网格线类型设为默认类型
    bg.CellStyle.Spacing.All = 1 '内容距离网格线1毫米
    bg.Width = 160 '表宽为150毫米
    bg.Height = 50 '表高为150毫米
    bg.Rows.Count = 6 '设置行数
    bg.Cols.Count = 6 '设置列数
    bg.Cells(0,0).text = "贵州省瓮安县人民检察院"
    bg.Cells(0,0).SpanCols = 6 '合并第一行全部单元格,用于显示主标题
    bg.Cells(0,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '主标题居中
    bg.Cells(0,0).Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体
    bg.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线
    '设置副标题
    bg.Cells(1,0).text = "涉案卷宗及财物二维码管理系统" '通过左边空格数量来调整副标题位置
    bg.Cells(1,0).SpanCols = 6 '合并地二行全部单元格,用于显示副标题
    bg.Cells(1,0).Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体
    bg.Cells(1,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '副标题内容居中
    bg.Rows(1).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第二行的网格线
    bg.Rows(1).Style.Borders.Bottom = New prt.Linedef  '恢复第二行底端的网格线
    bg.Rows(1).Height = 8 '设置第二行的高度,拉开和表格主体的距离.
    '设置列标题
    
    bg.Cells(2,0).text = "基本信息" '通过左边空格数量来调整副标题位置
    bg.Cells(2,0).SpanCols = 3 '合并地二行全部单元格,用于显示副标题
    bg.Cells(2,0).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置主标题字体
    bg.Cells(2,0).Style.TextAlignHorz = prt.AlignHorzEnum.left '副标题内容居中
    bg.Cells(2,3).text = "卷宗编号"
    bg.Cells(2,3).Style.TextAlignHorz = prt.AlignHorzEnum.right '副标题内容居中
    bg.Cells(2,4).text = currow("卷宗编号")  '通过左边空格数量来调整副标题位置
    bg.Cells(2,4).SpanCols = 2 '合并地二行全部单元格,用于显示副标题
    bg.Cells(2,4).Style.Font = New Font("宋体", 10, FontStyle.Bold) '设置主标题字体
    bg.Cells(2,4).Style.TextAlignHorz = prt.AlignHorzEnum.Center '副标题内容居中
    
    bg.Rows(2).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第二行的网格线
    bg.cells(2,0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第二行的网格线
    bg.cells(2,3).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第二行的网格线
    bg.cells(2,3).Style.Borders.Bottom = New prt.Linedef  '恢复第二行底端的网格线
    bg.cells(2,0).Style.Borders.Bottom = New prt.Linedef  '恢复第二行底端的网格线
    bg.Rows(2).Style.Borders.Bottom = New prt.Linedef  '恢复第二行底端的网格线
    bg.Rows(2).Height = 8 '设置第二行的高度,拉开和表格主体的距离.
    '设置列标题
    bg.Cols(0).Width = 20
    bg.Cols(1).Width = 45
    bg.Cols(2).Width = 20
    bg.Cols(3).Width = 45
    bg.Cols(4).Width = 20
    bg.Cols(5).Width = 20
    bg.Rows.Count = 4
    bg.Rows(0).Height = 15
    bg.Rows(1).Height = 15
    bg.Rows(2).Height = 10
    bg.Rows(3).Height = 10
    bg.Rows(4).Height = 10
    bg.Rows(5).Height = 10
    bg.Rows(6).Height = 10
    bg.Style.TextAlignHorz = prt.AlignHorzEnum.Center '所有文本内容居中'
    bg.Cells(3,0).Text = "所属地州"
    bg.Cells(3,1).Text = CurRow("所属地州")
    bg.Cells(3,2).Text = "卷宗名称"
    bg.Cells(3,3).Text = CurRow("卷宗名称")
    bg.Cells(3,4).Text = "涉案款物"
    bg.Cells(3,5).Text = CurRow("涉案款物")
    
    bg.Cells(4,0).Text = "所属单位"
    bg.Cells(4,1).Text = CurRow("所属单位")
    bg.Cells(4,2).Text = "卷宗册数"
    bg.Cells(4,3).Text = CurRow("卷宗册数")
    bg.Cells(4,4).Text = "款物数量"
    'bg.Cells(4,5).Text = ndr("款物数量")
    bg.Cells(5,0).Text = "承办部门"
    bg.Cells(5,1).Text = CurRow("承办部门")
    bg.Cells(5,2).Text = "承办人员"
    bg.Cells(5,3).Text = CurRow("承办人")
    bg.Cells(5,4).Text = "使用人员"
    bg.Cells(5,5).Text = CurRow("使用人")
    bg.Cells(6,0).Text = "录入时间"
    bg.Cells(6,1).Text = CurRow("录入时间")
    bg.Cells(6,2).Text = "联系电话"
    bg.Cells(6,3).Text = CurRow("联系电话")
    bg.Cells(6,4).Text = "办理状态"
    bg.Cells(6,5).Text = CurRow("办理状态")
    doc.Body.Children.Add(bg)
    
    Next
    Dim r1 As WinForm.RadioButton = e.Form.Controls("RadioButton1")
    Dim r2 As WinForm.RadioButton = e.Form.Controls("RadioButton2")
    If r1.Checked=True Then
        Doc.Preview()
    Else
        If r2.Checked=True Then
            Doc.Print()
        Else
            MessageBox.Show("请选择预览或者直打!")
        End If
    End If
End If
[此贴子已经被作者于2017/11/11 15:00:25编辑过]

 回到顶部