我可以使用类似DataGridView.NET的Crystal report创建报告吗?

我可以使用类似DataGridView.NET的Crystal report创建报告吗?,.net,visual-studio,datagridview,crystal-reports,.net,Visual Studio,Datagridview,Crystal Reports,我正在尝试创建一个Crystal报表,其中需要隐藏DataGridView之类的列 我有一个DataGridView,它有如下列 |销售订单|供应商|产品名称|产品类型|数量|订单价格|支付方式|订单状态|订单状态|订单日期|总金额| 我有一个过滤器按钮,可以过滤DataGridView的列。 我只按如下方式设置DataGridView Datagridview1.Columns(ColumntoHide).Visible=False 我希望我的报告在筛选列时显示为与DataGridView相同

我正在尝试创建一个Crystal报表,其中需要隐藏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对象来创建我的表。

当您在DataGridView中的行中循环时,是不是因为DataTable中包含了过滤器而没有显示的行?这就是您试图解决的问题吗?是的,它包含在我的
dt
中,否。我的问题是,我希望在筛选Datagridview时也对报表进行筛选。我不确定Crystal是否可以在GridView中的筛选器更改时动态重画报表。我相信这将需要一个到适当事件处理程序的钩子,该钩子只需丢弃先前呈现的报告,然后使用新的数据集重建报告,并基于新的过滤器构建数据集。至少我认为它是这样工作的。将Visual Basic标记添加到此列表中可能会有所帮助,并从比我更有经验的VB开发人员那里获得一些输入。为什么不在将该列添加到DataTable之前简单地检查该列是否隐藏?