首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-09-07 
多个报表使用同一个 CrystalReportViewer 可以吗?想在同一个页面,用不同的查询条件来调用不同的存储过程,

多个报表使用同一个 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();
这样设置。不要直接通过那个事件。

热点排行