当前位置: 代码迷 >> ASP.NET >> 多个表格使用同一个 CrystalReportViewer 可以吗
  详细解决方案

多个表格使用同一个 CrystalReportViewer 可以吗

热度:7756   发布时间:2013-02-25 00:00:00.0
多个报表使用同一个 CrystalReportViewer 可以吗?
想在同一个页面,用不同的查询条件来调用不同的存储过程,然后把返回的dataset绑定到CrystalReportViewer 的数据源。
现在的问题是CrystalReportViewer_Load事件在search按钮事件前触发,然后提示 ds里没有table 0。

怎么办呢,请大家指点一下,急等~
C# code
DataSet ds = new DataSet();ReportDocument optDoc = new ReportDocument(); protected void CrystalReportViewer1_Load(object sender, EventArgs e)        {            CrystalReportViewerDataBind(ds.Tables[0]);                            }   private void CrystalReportViewerDataBind(DataTable dataSource)        {            optDoc.SetDataSource(dataSource);            CrystalReportViewer1.ReportSource = optDoc;        }



------解决方案--------------------------------------------------------
你应该可以通过ReportDocument的实例去设置数据源吧
例如:
private ReportDocument GetReportDocument()
{
ReportDocument report = new ReportDocument();
report.Load(TemplateFullPath);
report.SetDataSource(Data);
for (int i = 0; i < report.ParameterFields.Count; i++)
{
report.SetParameterValue(report.ParameterFields[i].Name, "");
}
string[] paramNames = ReportModel.GetParameterNames();
for (int i = 0; i < paramNames.Length; i++)
{
report.SetParameterValue(paramNames[i], ReportModel.GetParameter(paramNames[i]));
}
return report;
}

这个方法返回实例,然后在通过
CrystalReportViewer1.ReportSource = GetReportDocument();
CrystalReportViewer1.DataBind();
这样设置。不要直接通过那个事件。