我如何知道 CopyToDataTable 是否没有行,以便空白页不会出现在 vb.net 中

问题描述 投票:0回答:1

我怎么知道 CopyToDataTable 是否没有行,这样空白页就不会出现在 vb.net 中?

我的代码有问题吗?

下面也是解决方案代码,但我如何用我的代码实现它。 谢谢

'I found the code solution below but I didn't implement it in my code 
                If payslips.LastOrDefault() IsNot payslip Then
                    report.NewPage()
                End If
  Private Sub Generate()
        Dim dt As New DataTable()
        report.Clear()
        Dim query = "Select EMPID,[NAME],MONTHLYSALARY From tblemployee"
        Using adapter As New OleDbDataAdapter(query, Con)
            adapter.Fill(dt)
        End Using
        For Each row As DataRow In dt.Rows
            Dim table = {row}.CopyToDataTable()
  report.AddDataTable(table)
            report.NewPage()
        Next row
    End Sub

vb.net datatable row
1个回答
0
投票

这里的重点是,每次调用

NewPage
,都会添加一个新页面。如果默认情况下有一页并且您为每一行调用
NewPage
,那么您最终会比行多一页,这正是您所看到的。

一个解决方案是在添加要在该页面上打印的数据之前调用,当且仅当需要新页面时。第一行将打印在默认页面上,因此您只需要为第二行及以后调用

NewPage
。通过使用
For
循环而不是
For Each
循环,您有一个行索引,您可以测试它以确定您是否在第一行:

For i = 0 To dt.Rows.Count - 1
    Dim row = dt.Rows(i)

    If i > 0 Then
        'We are not on the first row so we need a new page.
        report.NewPage()
    End If

    '...
Next
© www.soinside.com 2019 - 2024. All rights reserved.