我使用Visual Studio 2010和C#构建一个查询两个数据库的应用程序,然后生成一个也有子报表的报表。主报告将三个参数传递给子报表。主要报告的每个记录都显示子报告空白。因此,我将NoRowsMessage设置为“Nothing Returned”以确保子报表确实正在显示。现在,子报告不是空白,而是返回我的消息。我通过预览数据和输入参数值来测试tableadapter。结果很好。我的猜测是由于某种原因,参数没有正确传递到子报表。我已尝试将参数设置为允许空值,并允许空值。没有什么变化。我已将LocalReport.SubreportProcessing设置为新的SubreportProcessingEventHandler。我在子报表的事件处理程序中设置了数据源。我不知道我错过了什么。任何建议都会有所帮助。
以下是主表单中的代码
private void JointAgreement_Load(object sender,EventArgs e) { // TODO:这行代码将数据加载到'termLookup.ACADEMICCALENDAR'表中。您可以根据需要移动或删除它。 this.aCADEMICCALENDARTableAdapter1.Fill(this.termLookup.ACADEMICCALENDAR); // TODO:这行代码将数据加载到'yearLookup.ACADEMICCALENDAR'表中。您可以根据需要移动或删除它。 this.aCADEMICCALENDARTableAdapter.Fill(this.yearLookup.ACADEMICCALENDAR); }
private void button1_Click(object sender, EventArgs e)
{
string year = comboBox1.Text;
string term = comboBox2.Text;
Classes.Functions.GetStudentList(year, term);
List<ReportParameter> paramList = new List<ReportParameter>();
paramList.Add(new ReportParameter("Year", year, false));
paramList.Add(new ReportParameter("Term", term, false));
reportViewer1.LocalReport.SetParameters(paramList);
reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SetSubDataSource);
this.joint_Agreement_InfoTableAdapter.Fill(this.jointAgreementInfo.Joint_Agreement_Info);
this.reportViewer1.RefreshReport();
}
public void SetSubDataSource(object sender, SubreportProcessingEventArgs e)
{
e.DataSources.Add(new ReportDataSource("StudentDetail", tRANSCRIPTDETAILBindingSource));
}
答案 0 :(得分:0)
我实际上找到了自己问题的答案。我不知道出了什么问题,所以我不知道要问什么问题。我在下面的链接中找到了stackoverflow的答案。 Passing Report Parameters to SubReport in VS 2010 RDLC感谢所有试图提供帮助的人。