我需要将一个DataSet(包含许多表)分配给ReportDocument,然后将其分配给CystalReportViewer。
但是使用此代码我无法显示报告。我怎么能这样做?
protected void btnGenerarErrores_Click(object sender, EventArgs e)
{
if (txtNumeroBoleta.Text.Trim().Length > 0)
{
ReportDocument reporte = new ReportDocument();
var ruta = Server.MapPath("ReporteErroresPorBoleta.rpt");
reporte.Load(ruta);
string parametro = txtNumeroBoleta.Text;
clsReportesBoletaDat reportesBoleta = new clsReportesBoletaDat();
DataSet setErrores = reportesBoleta.RetornarBoletasPorASA(parametro);
DataSet dsNuevo = setErrores.Copy();
reporte.SetDataSource(dsNuevo.Tables.ToString());
CrystalReportViewer1.ReportSource = reporte;
//if (setErrores.Tables.Count > 0)
//{
// CrystalReportViewer1.ReportSource = reporte;
//}
txtNumeroBoleta.Text = "";
}
}
答案 0 :(得分:0)
首先清除报表对象的现有数据源连接:
reporte.DataSourceConnections.Clear();
您无需复制数据集,只需将数据源设置为原始数据集即可:
reporte.SetDataSource(setErrores);
如果数据集中的表名与报表中的表名/别名不匹配,则可能需要单独设置它们:
reporte.Tables["ReportTable"].SetDataSource(setErrores.Tables["DataSetTable"]);
然后将查看器的reportsource设置为您的报告并刷新它:
CrystalReportViewer1.ReportSource = reporte;
CrystalReportViewer1.RefreshReport();