我在VS2008中有一个包含一个表和10个文本框的报告。我从DB-table sucesfully绑定到表的值。但是如何在同一个报表中将文本框与不同的DB表绑定?如何一次在同一个代码隐藏中绑定多个数据集?如果我使用多个查询来获取单个报告的数据呢?我做的示例代码在这里 - 它将数据绑定到.rdlc中的表。
//表映射命名DataTable。
adapter.TableMappings.Add("View", mappingTableDataSet);
// Open the connection.
connection.Open();
Console.WriteLine("\nThe SqlConnection is open.");
SqlCommand command = new SqlCommand(queryString, connection);
command.CommandType = CommandType.Text;
// Set the SqlDataAdapter's SelectCommand.
adapter.SelectCommand = command;
command.ExecuteNonQuery();
// Fill the DataSet.
DataSet dataset = new DataSet(mappingTableDataSet);
adapter.Fill(dataset);
//Set up reportviewver and specify path
ReportViewer viewer = new ReportViewer();
viewer.ProcessingMode = ProcessingMode.Local;
viewer.LocalReport.ReportPath = reportPath;
//specify the dataset syntax = (datasetofreport.rdlc,querydataset);
viewer.LocalReport.DataSources.Add(new ReportDataSource(reportDataSource, dataset.Tables[0]));
//viewer.LocalReport.DataSources.Add(new ReportDataSource("podDataSet_Route_Summary", dataset.Tables[0]));
connection.Close();`
答案 0 :(得分:2)
我尝试了以下内容并且它有效。从查询结果中的每个'数据集'都应该映射到相应的'reportDataSource',否则它将通过错误说'reportDataSource'不可用。我们需要提供尽可能多的数据集,因为我们使用reportdatasources分别如下
viewer.LocalReport.DataSources.Add(new ReportDataSource(reportDataSource, dataset.Tables[0]));
viewer.LocalReport.DataSources.Add(new ReportDataSource("reportDataSource1", dataset.Tables[1]));
viewer.LocalReport.DataSources.Add(new ReportDataSource("reportDataSource2", dataset.Tables[2]));
viewer.LocalReport.DataSources.Add(new ReportDataSource("reportDataSource3", dataset.Tables[3]));
viewer.LocalReport.DataSources.Add(new ReportDataSource("reportDataSource4", dataset.Tables[4]));
这里每个'reportDataSource'对应于单个report.Eg:Table,Textbox,Matrix的不同部分,它们独立保存在单个报告中