vb.net – 将DataTable绑定到RDLC和ReportViewer
我已经阅读了关于这一点的每一个SO问题和在线文章,我在几个不同的实例中感到困惑.
正如我的项目所在,我尝试手动创建一个Report(Report2.rdlc)并将DataSource中的不同字段拖到报表上,并将该报表用作ReportViewer的数据源.这没用.我需要使用我从SqlDataAdapter创建的DataTable,因为它解密了特定的行.我尝试创建一个DataSet并用DataTable填充它,但是我也无法执行它. >我不明白:如果我有一个ReportViewer控件 DataTable名称为dt,ReportViewer控件为rv1. 这是我一直在玩的代码,但是我不确定将什么作为报告路径 Dim RDS1 As ReportDataSource = New ReportDataSource("Test Report",dt) rv1.LocalReport.DataSources.Clear() rv1.ProcessingMode = ProcessingMode.Local rv1.LocalReport.EnableExternalImages = True rv1.LocalReport.ReportEmbeddedResource = "Your Report Path" rv1.LocalReport.DataSources.Add(RDS1)`. 最糟糕的是,ReportViewer只显示空白.什么可能出错,没有错误或任何指标. DataTable dt中的信息都是正确的(通过在DGV中查看来验证).我只是想在Report / ReportViewer中使用这些数据. 有人有建议吗?我似乎无法在这个问题上休息一下. 编辑:以下是我填充DataTable的方法: Dim cmd As New SqlCommand cmd.CommandText = "Select * FROM Participant " & _ "WHERE FIRST_NM_TXT = @searchFirst " & _ "OR LAST_NM_TXT = @searchLast" cmd.Parameters.AddWithValue("@searchFirst",SearchFirstTxt.Text) cmd.Parameters.AddWithValue("@searchLast",SearchLastTxt.Text) Dim adapter As New SqlDataAdapter(cmd) adapter.Fill(dt) 所以,这里我们有DataTable,其中包含正确的数据.然后我去了项目名称,添加了一个新的报告(Report1.rdlc),从这里我不确定接下来的步骤.如果我动态创建一个DataSet,我应该在这个窗口中看到它吗? 由于这似乎是一个流行的线程,我将解释我是如何能够快速/简单地执行此操作的. >右键单击您的项目 – >添加新项目 – >选择报告.rdlc Public DataSet FillDS() //Try Catch block & other code omitted Dim cmd As New SqlCommand cmd.CommandText = "Select * FROM Participant " & _ "WHERE FIRST_NM_TXT = @searchFirst " & _ "OR LAST_NM_TXT = @searchLast" cmd.Parameters.AddWithValue("@searchFirst",SearchFirstTxt.Text) cmd.Parameters.AddWithValue("@searchLast",SearchLastTxt.Text) Dim adapter As New SqlDataAdapter(cmd) adapter.Fill(dt) 然后,我们在运行时绑定数据源. DataSet yourDS = FillDS(); ReportDataSource rds = New ReportDataSource("YourDataSetNameFromStep4",yourDS.Tables[0]); yourReportViewerName.localreport.datasources.clear(); yourReportViewerName.localreport.datasources.add(rds); yourReportViewerName.refreshreport(); 如果有什么我可以在这里发帖帮助其他人,请告诉我. 解决方法
有些事要检查:
“测试报告”必须是报告设计者使用的名称.这是区分大小写的. dt必须与报表设计器中使用的名称匹配 “您的报告路径”应采用“namespace.reportname.rdlc”形式.这是区分大小写的. 编辑: Using cn As New SqlConnection(gcs) cn.Open() Dim sa As New SqlDataAdapter(sql,cn) sa.SelectCommand.CommandTimeout = cGlobals.ReportTimeout sa.Fill(ds,"Foos") End Using bs.DataSource = ds bs.DataMember = "Foos" Dim rds As New ReportDataSource rds.Name = "dsFooList_Foos" rds.Value = bs rv1.LocalReport.DataSources.Add(rds) Me.Show() rv1.RefreshReport() 编辑2:在屏幕截图中,下拉数据源并选择所需的数据源.然后它将显示在“报告数据”窗口中,该窗口可能隐藏在“查看”菜单中(只有在您处理报告时才会显示)然后您可以从工具箱中将表添加到报告中,然后拖动“报告数据”窗口中的字段到表格单元格. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |