我在C#ASP.net Web应用程序中创建了一个报告,以生成提案的封面。我正在尝试将提案ID传递给报告。我的数据集设置为接受提议ID作为查询参数,并且我定义了GetByProposalID和FillByProposalID方法。
问题是报表运行时,报表查看器不包含数据。问题出在我的代码中,或者在我的报告/报告查看器配置中。
这是我的方法:
/// <summary>
/// Generate the cover page report as a PDF file from a given proposal
/// </summary>
/// <param name="ProposalID">Proposal ID from the database of the proposal</param>
public void GenerateCoverPage( int ProposalID )
{
ReportViewer viewer = new ReportViewer();
viewer.Reset();
viewer.ProcessingMode = ProcessingMode.Local;
viewer.LocalReport.ReportPath = "ReportCoverPage.rdlc"; //sets the report from the project RDLC file
//Connect the dataset to the report
ds_ReportCoverPage ds = new ds_ReportCoverPage();
ds_ReportCoverPage.dt_ReportCoverPageDataTable table = new ds_ReportCoverPage.dt_ReportCoverPageDataTable();
ds_ReportCoverPageTableAdapters.dt_ReportCoverPageTableAdapter ta = new ds_ReportCoverPageTableAdapters.dt_ReportCoverPageTableAdapter();
ta.FillByProposalID(table, ProposalID); //This SHOULD fill the adapter with the data from the selected proposal
ReportDataSource source = new ReportDataSource("ds_Report_ReportCoverPage", ds.Tables[0]); //Name must match the data source name within the report
viewer.LocalReport.DataSources.Add(source);
//Run-time exception that there is no report parameter "@Proposal"
//ReportParameter parm = new ReportParameter("@Proposal", ProposalID.ToString()); //Placeholder in report query
//viewer.LocalReport.SetParameters(parm);
viewer.LocalReport.Refresh();
string filepath = "C:\\Temp\\foo.pdf";
SavePDF(viewer, filepath);
}
正如您所看到的,我尝试将参数作为ReportParameter
传递,但参数位于查询中而不是报告中,因此被拒绝。
(由于在SO上查找其他问题,我已经做到了这一点。)
答案 0 :(得分:1)
您需要在报告中使用参数,然后将该参数映射到数据集中查询中的参数。