提问人:GojoSatoru 提问时间:7/5/2023 最后编辑:Mostafa RoghanianGojoSatoru 更新时间:7/6/2023 访问量:63
如何打印每页使用相同模板的文档 Web asp.net VB
How to print a document with the same template per page web asp.net vb
问:
我是 asp.net 新手,使用 VB.Net 语言。
如何在每页上打印具有相同模板或标题的文档?
如果 GridView 有 10 条以上的记录,则其余记录将位于第 2 页上,其中包含第一页的模板/标题。
Protected Sub PrintGridView(ByVal sender As Object, ByVal e As EventArgs)
Dim dataGrid As New System.Web.UI.WebControls.GridView
dataGrid.DataSource = (From lst In _lstPrint Select New With {.Item = lst.Item, .Descricao = lst.TipoComponente, .Certificado = lst.Certificacao, .Corrida = lst.Corrida, .Qtd = lst.Qtd, .UnidMedida = lst.UnidadeMedida})
Dim obj As New eLVM()
obj.Id = Integer.Parse(Request.QueryString("id"))
' Disable Paging if all Pages need to be Printed.
dataGrid.AllowPaging = False
' Re-bind the GridView.
dataGrid.DataSource = (From lst In _lstPrint Select New With {.Item = lst.Item, .Descricao = lst.TipoComponente, .Certificado = lst.Certificacao, .Corrida = lst.Corrida, .Qtd = lst.Qtd, .UnidMedida = lst.UnidadeMedida})
dataGrid.DataBind()
' For Printing Header on each Page.
dataGrid.UseAccessibleHeader = True
dataGrid.HeaderRow.TableSection = TableRowSection.TableHeader
dataGrid.FooterRow.TableSection = TableRowSection.TableFooter
dataGrid.Attributes("style") = "border-collapse:separate"
For Each row As GridViewRow In dataGrid.Rows
If (row.RowIndex + 1) Mod dataGrid.PageSize = 0 AndAlso row.RowIndex <> 0 Then
row.Attributes("style") = "page-break-after:always;"
End If
Next
Using sw As StringWriter = New StringWriter()
' Render GridView to HTML.
Dim hw As HtmlTextWriter = New HtmlTextWriter(sw)
dataGrid.RenderControl(hw)
' Enable Paging.
dataGrid.AllowPaging = True
'dataGrid.DataSource = _lstPrint
'dataGrid.DataBind()
' Remove single quotes to avoid JavaScript error.
Dim gridHTML As String = sw.ToString().Replace(Environment.NewLine, "")
Dim gridCSS As String = gridStyles.InnerText.Replace("""", "'").Replace(Environment.NewLine, "")
' Print the GridView.
Dim script = "window.onload = function() { PrintGrid('" & gridHTML & "', '" & gridCSS & "'); }"
ClientScript.RegisterStartupScript([GetType](), "GridPrint", script, True)
End Using
' rest of the code ...
End Sub
我希望该黑色部分与其余的 GridView 记录一起在第二页的标题部分重复。
答:
0赞
Albert D. Kallal
7/5/2023
#1
我有点想知道是否尝试以某种方式转换 HTML 中的渲染表(这就是 asp.net 处理系统处理该控件后 gv 的样子)。
因此,最终结果很难控制页面布局,事实上,基于 Web 的打印可能是您可以实现的最困难的任务之一。
结果呢?
我认为您最好采用报告生成器系统。请考虑客户端 RDL 报表查看器。所谓的 RDL(报表定义语言)与 SSRS 报告服务大致相同,但不需要 SQL Server 报告服务。
这不仅允许非常漂亮的布局和页面系统,而且还具有内置的 Excel、Word 和 PDF 导出功能。
因此,它看起来像这样:
因此,请考虑使用 RDL 报表控件。设置起来可能有点痛苦,但这是我会考虑的事情。
您需要逐步谷歌了解如何设置 + 让报表查看器(和设计器)正常工作,所有这些都可以在没有 SQL Server Reporting Services 的情况下工作。
一个链接:
评论