首页 > 解决方案 > 我可以使用行为类似于 DataGridView .NET 的 Crystal Report 创建报表吗?

问题描述

我正在尝试创建一个 Crystal Report,我需要在其中隐藏 DataGridView 等列。

我有一个 DataGridView,它的列如下

|销售订单|供应商|产品名称|产品类型|数量|订单价格|付款方式|订单状态|订单状态|订单日期|总金额|

我有一个过滤器按钮,它将过滤 DataGridView 的列。我只设置DataGridView如下 Datagridview1.Columns(ColumntoHide).Visible = False

当我过滤列时,我希望我的报告与 DataGridView 相同。

Sub SalesOrder()
    Dim dt As New DataTable
    Cursor.Current = Cursors.WaitCursor

    With dt
        .Columns.Add("salesorder")
        .Columns.Add("supplier")
        .Columns.Add("prodname")
        .Columns.Add("prodtype")
        .Columns.Add("qty")
        .Columns.Add("orderprice")
        .Columns.Add("payment")
        .Columns.Add("orderstatus")
        .Columns.Add("orderdate")
        .Columns.Add("total")
        .Columns.Add("overall")
    End With

    For Each dr As DataGridViewRow In frmSalesOrderReport.dgvRSalesOrder.Rows
        dt.Rows.Add(dr.Cells(1).Value, dr.Cells(2).Value, dr.Cells(3).Value, dr.Cells(4).Value, dr.Cells(5).Value, dr.Cells(6).Value, dr.Cells(7).Value, dr.Cells(8).Value, CDate(dr.Cells(9).Value).ToString("MMM dd, yy"), dr.Cells(10).Value, frmSalesOrderReport.txtTotal.Text)
    Next

    Dim rptDoc As CrystalDecisions.CrystalReports.Engine.ReportDocument

    rptDoc = New crSalesOrder
    rptDoc.SetDataSource(dt)
    frmReports.crvReports.ReportSource = rptDoc

    frmReports.ShowDialog()
    frmReports.Dispose()

    Cursor.Current = Cursors.Default
End Sub

这就是我试图在当前报告中实现我想要的方式,但它是拖放方法,所以即使我过滤了列,报告中的列也不会自动隐藏。我还使用 Box 对象和 Line 对象来创建我的表格。

标签: .netvisual-studiodatagridviewcrystal-reports

解决方案


推荐阅读