如果在 vb.net 中有多个页面要打印的数据,如何打印 gridview 内容

Posted

技术标签:

【中文标题】如果在 vb.net 中有多个页面要打印的数据,如何打印 gridview 内容【英文标题】:how to print gridview contents if it has data to print on more than a page in vb.net 【发布时间】:2014-12-25 04:11:01 【问题描述】:

我有一个 gridview,其中包含大量数据(来自数据库)。我想把它打印出来。如果我只有 1 页要打印(我的意思是只有 44 行记录),下面的代码工作正常。如果网格视图内容的其余部分没有被打印出来。

如果我要在多页上打印数据,需要进行哪些更改才能允许多页打印?

任何人请帮助我....提前衷心感谢...我的代码附在下面...期待一个快速明确的答案...

    Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

        Dim ColumnCount As Integer = DataGridView1.ColumnCount
        Dim RowCount As Integer = DataGridView1.RowCount
        Dim CellTopPos As Integer = 1

        For Row = 0 To RowCount - 1

        Dim CellLeftPos As Integer = PrintDocument1.PrinterSettings.DefaultPageSettings.Margins.Left

           For Cell = 0 To ColumnCount - 1

           Dim CellValue As String = DataGridView1.Rows(Row).Cells(Cell).Value.ToString()
           Dim CellWidth = DataGridView1.Rows(Row).Cells(Cell).Size.Width + 50
           Dim CellHeight = DataGridView1.Rows(Row).Cells(Cell).Size.Height

           Dim Brush As New SolidBrush(Color.Black)
           e.Graphics.DrawString(CellValue, New Font("Century Gothic", 10), Brush, CellLeftPos, CellTopPos)
           e.Graphics.DrawRectangle(Pens.Black, CellLeftPos, CellTopPos, CellWidth, CellHeight)

           CellLeftPos += CellWidth
           Next

           CellTopPos += DataGridView1.Rows(Row).Cells(0).Size.Height
          Next


    End sub



Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        preview.PrintDialog1.Document = PrintDocument1
        preview.PrintDialog1.PrinterSettings = PrintDocument1.PrinterSettings
        preview.PrintPreviewControl1.Document = PrintDocument1()
        PrintDocument1.PrinterSettings.DefaultPageSettings.Landscape = False
        preview.ShowDialog()

        AddHandler PrintDocument1.PrintPage, AddressOf PrintDocument1_PrintPage
    End Sub

【问题讨论】:

Print on multiple page in VB on VS 2010 的可能重复项 【参考方案1】:

如果您想打印更多页面并且必须在完成后将其设置为 false,您已将 e.HasMorePages 设置为 true。看看Printing a DataGridView

【讨论】:

感谢桑迪普的回复。实际上我正在使用VS2010。在这个 Allowpaging 和 Bind 属性中,gridview 不可用.....你能建议我一个出路吗? 我没有使用任何分页概念。实际上我不知道那是什么..... 那么您在打印中面临什么问题,因为您应该能够打印 DataGridView1 中的所有行。 见..我在 gridview 中有 100 行。但是打印时一页只能容纳 51 行。所以其余的行应该打印在下一页(第 2 页)上。现在没有发生这种情况。它只打印网格的前 51 行。即使我有大量行,我也想打印所有行。 查看答案中提到的博客

以上是关于如果在 vb.net 中有多个页面要打印的数据,如何打印 gridview 内容的主要内容,如果未能解决你的问题,请参考以下文章

页面加载后运行循环 VB.NET

vb.net 导出PDF

VB NET 如何暂停打印机队列?

vb.net 网页提交表单

vb.net 中是不是有任何代码来检查打印机状态

VB.NET 数据类型不匹配,数据输入过长