Search code examples
c#winformsdatatablereportviewerlocalreport

how to set Datatable as datasource in ReportViewer


I was searching in the last question about Datatable as datasource in ReportViewer and i found this as solution

DataTable table = new DataTable();
table.Columns.Add("value", typeof(string));
table.Columns.Add("price", typeof(string));
table.Columns.Add("quantity", typeof(string));

table.Rows.Add("test1","10","20");
table.Rows.Add("test2", "10", "20");

reportViewer1.LocalReport.DataSources.Clear();

ReportDataSource rprtDTSource = new ReportDataSource("TITLE",table);

reportViewer1.LocalReport.DataSources.Add(rprtDTSource);
reportViewer1.RefreshReport();

but i get this image as result

enter image description here

what is the problem ??


Solution

  • It seems you have forgotten to set the report source for your report viewer control. You can set the report source using either of this options:

    For example, I suppose you have added a report to your project, so you can show it in the report viewer this way:

    var reportDataSource1 = new ReportDataSource("NameOfReportDataSet", YourDataTable);
    this.reportViewer1.LocalReport.DataSources.Add(reportDataSource1);
    this.reportViewer1.LocalReport.ReportEmbeddedResource = "Namespace.ReportName.rdlc";
    this.reportViewer1.RefreshReport();
    

    Also you can simply set the report of the report viewer using designer. Put a report viewer on your form and click on top-right arrow to open the smart tag window of report viewer, then choose a report from combo box.

    enter image description here