我正在使用 Visual Studio 2010 和 C# 构建一个查询两个数据库的应用程序,然后生成一个也有一个子报表的报表。主报表将三个参数传递给子报表。子报告在主报告的每条记录上都是空白的。因此,我将 NoRowsMessage 设置为“未返回任何内容”以确保子报表确实在显示。现在,子报告不是空白,而是返回我的消息。我已经通过预览数据和输入参数值来测试 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));
}