Foxtable(狐表)用户栏目专家坐堂 → 请教分页码打印


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

主题:请教分页码打印

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/10 9:22:00 [显示全部帖子]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/13 16:40:00 [显示全部帖子]

以下是引用hopestarxia在2019/5/13 16:27:00的发言:
老师,这个是分组打印了,我照着这个研究,还是没能实现分页打印,我想在不是相同的仓库了的时候,则自动实现换页。

 

Dim doc As New PrintDoc
Dim rt As Prt.RenderTable
Dim rx As prt.RenderText
Dim tbl As Table = Tables("客户")
Dim Rows As List(Of DataRow)
Dim Regions As List(Of String) = tbl.DataTable.GetValues("地区")
doc.Pagesetting.LandScape = True
For Each Region As String In Regions
    Dim rm = new prt.RenderEmpty '定义一个新的空对象
    rm.BreakBefore = prt.BreakEnum.Page '打印前换页
    doc.Body.Children.Add(rm) '加入到报表中

    rx = New prt.RenderText
    rx.Style.FontSize = 14
    rx.Style.FontBold = True
    rx.Style.Spacing.Bottom = 2
    rx.Text = "地区: " & Region
    doc.Body.Children.Add(rx)
    rt = New prt.RenderTable
    rt.Style.Font = Tables("客户").Font
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center
    rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray)
    rt.Style.Spacing.Bottom = 5
    rt.CellStyle.Spacing.All = 1
    rt.Style.Font = tbl.Font
    Rows = tbl.DataTable.Select("[地区] = '" & Region & "'")
    For c As Integer = 0 To tbl.Cols.Count - 1
        rt.Cells(0,c).Text = tbl.Cols(c).Name
        rt.Cols(c).Width = tbl.Cols(c).PrintWidth
        For r As Integer = 0 To Rows.Count -1
            rt.Cells(r + 1, c).Text = rows(r)(tbl.Cols(c).Name)
        Next
    Next
    rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All
    doc.Body.Children.Add(rt)
Next
doc.preview()


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/13 17:45:00 [显示全部帖子]

以下是引用hopestarxia在2019/5/13 17:31:00的发言:
 
但是这样把我原来设置的打印纸张大于,定于每张打多少行,以及每页的标题及每页下面的其他内容都没有了。原来定义的样式没有了。
 

 

1、如果要分组,又要限定每页打印多少行,请把强制换页的代码,写到分组的循环里面去;

 

2、每页的顶部、底部内容,是页眉页脚 http://www.foxtable.com/webhelp/scr/1197.htm

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/13 18:05:00 [显示全部帖子]


Dim t As Table = e.Form.Controls("Table1").Table
For Each ck As String In t.DataTable.GetValues("仓库名称")
    Dim drs = t.DataTable.Select("仓库名称='" & ck & "'")
    Dim ps As Integer = Math.Ceiling(drs.count / 16)
    For i As Integer = 1 To ps
        Dim idxs As String = ""
        t.Filter = ""
        For j As Integer = (i-1)*16 To i*16-1
            If j >= drs.count Then
                Exit For
            End If
            idxs &= "'" & drs(j)("_Identify") & "',"
        Next
        t.Filter = "_Identify  in (" & idxs.trim(",") & ")"
       
        Dim doc As PrintDoc = e.Form.GernatePrintDoc()
        doc.Preview()
    Next
Next


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/14 9:23:00 [显示全部帖子]

以下是引用hopestarxia在2019/5/13 19:33:00的发言:
有点甜老师,我如果还想在这上面加上页码,页码按仓库来分(不是按所有的数据),共几页,第几页,请问如何实现?

 

加上页眉页脚即可。

 

Dim t As Table = e.Form.Controls("Table1").Table
For Each ck As String In t.DataTable.GetValues("仓库名称")
    Dim drs = t.DataTable.Select("仓库名称='" & ck & "'")
    Dim ps As Integer = Math.Ceiling(drs.count / 16)
    For i As Integer = 1 To ps
        Dim idxs As String = ""
        t.Filter = ""
        For j As Integer = (i-1)*16 To i*16-1
            If j >= drs.count Then
                Exit For
            End If
            idxs &= "'" & drs(j)("_Identify") & "',"
        Next
        t.Filter = "_Identify  in (" & idxs.trim(",") & ")"
       
        Dim doc As PrintDoc = e.Form.GernatePrintDoc()
        Dim rt = New prt.RenderText '设置文本对象的内容
        rt.Text = "第[PageNo]页,共[PageCount]页" '设置文本内容
        rt.Style.TextAlignHorz = prt.AlignHorzEnum.Right '靠右对齐
        rt.Style.Borders.Bottom = New prt.LineDef(0.3, Color.Green) '设置底边框
        rt.Style.Padding.Bottom = 0.5 '底端内容缩进0.5毫米
        rt.Style.FontSize = 8 '字体大小为8磅
        Doc.PageHeader = rt '作为页眉使用
        doc.Preview()
    Next
Next


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/30 15:32:00 [显示全部帖子]

 

代码没问题,请做一个对应实例发上来测试。

 

 


 回到顶部