Render RDLC report
To render an RDLC report in the Bold Reports® React Report Viewer, load the report from the local file system and bind a JSON array or a custom business object data collection as its data source. The following steps demonstrate how to render an RDLC report with a JSON array and a custom business object data collection.
To learn how to render an RDLC in a React application, you can watch this video:
Add the RDLC report
AreaCharts.rdlcfrom the Bold Reports® installation location to your applicationApp_Datafolder. For more information, refer to Samples and demos.
How do I bind a data source on the client side?
To bind a data source to the React Report Viewer on the client side, follow these steps:
- Set the RDLC report path to the
reportPathproperty. - Assign the
processingModeproperty toProcessingMode.Local. - Bind the JSON array collection to the
dataSourcesproperty as in the following code:
var viewerStyle = {'height': '700px', 'width': '100%'};
var reportPath = 'AreaCharts.rdlc';
var reportData = [{
value: [
{ SalesPersonID: 281, FullName: 'Ito', Title: 'Sales Representative', SalesTerritory: 'South West', Y2002: 0, Y2003: 28000, Y2004: 3018725 },
{ SalesPersonID: 282, FullName: 'Saraiva', Title: 'Sales Representative', SalesTerritory: 'Canada', Y2002: 25000, Y2003: 14000, Y2004: 3189356 },
{ SalesPersonID: 283, FullName: 'Cambell', Title: 'Sales Representative', SalesTerritory: 'North West', Y2002: 12000, Y2003: 13000, Y2004: 1930885 }
],
name: 'AdventureWorksXMLDataSet'
}];
function App() {
return (
<div style={viewerStyle}>
<BoldReportViewerComponent
id="reportviewer-container"
reportServiceUrl = {'https://demos.boldreports.com/services/api/ReportViewer'}
processingMode = {"Local"}
reportPath = {reportPath}
dataSources = {reportData}>
</BoldReportViewerComponent>
</div>
);
}
export default App;- Build and run the application.
Bind data source in Web API controller
The following steps help you configure the React Report Viewer Web API to render the RDLC report with a business object data collection.
-
Create a class and methods that returns business object data collection. Use the following code in your application Web API Service.
public class ProductList { public string ProductName { get; set; } public string OrderId { get; set; } public double Price { get; set; } public string Category { get; set; } public string Ingredients { get; set; } public string ProductImage { get; set; } public static IList GetData() { List<ProductList> datas = new List<ProductList>(); ProductList data = null; data = new ProductList() { ProductName = "Baked Chicken and Cheese", OrderId = "323B60", Price = 55, Category = "Non-Veg", Ingredients = "grilled chicken, corn and olives.", ProductImage = "" }; datas.Add(data); data = new ProductList() { ProductName = "Chicken Delite", OrderId = "323B61", Price = 100, Category = "Non-Veg", Ingredients = "cheese, chicken chunks, onions & pineapple chunks.", ProductImage = "" }; datas.Add(data); data = new ProductList() { ProductName = "Chicken Tikka", OrderId = "323B62", Price = 64, Category = "Non-Veg", Ingredients = "onions, grilled chicken, chicken salami & tomatoes.", ProductImage = "" }; datas.Add(data); return datas; } } -
Set the value of the
ProcessingModeproperty toProcessingMode.LocalandReportPathin the RDLC report location. -
Bind the business object data values collection by adding a new item to the
DataSourcesas in the following code snippet:[NonAction] public void OnInitReportOptions(ReportViewerOptions reportOption) { reportOption.ReportModel.ProcessingMode = ProcessingMode.Local; reportOption.ReportModel.ReportPath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/App_Data/Product List.rdlc"); reportOption.ReportModel.DataSources.Add(new BoldReports.Web.ReportDataSource { Name = "list", Value = ProductList.GetData() }); }Here the
Nameis case sensitive and it should be same as in the data source name in the report definition. TheValueaccepts IList, DataSet, and DataTable inputs.
How do I load a report as a stream?
To load a report as a stream in the React Report Viewer Web API service, create a report stream using the FileStream class and assign the report stream to the Stream property.
[NonAction]
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
string filePath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/App_Data/Product List.rdlc"); ;
// Opens the report from application App_Data folder using FileStream
FileStream reportStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
reportOption.ReportModel.Stream = reportStream;
reportOption.ReportModel.DataSources.Add(new BoldReports.Web.ReportDataSource { Name = "list", Value = ProductList.GetData() });
}In the previous code, the
Product List.rdlcreport is loaded from theApp_Datafolder location.
View report click
You can get the user selected parameter details when users click the ViewReport button in the React Report Viewer parameter block. The viewReportClick event allows you to handle the ViewReport button click on the client side, as in the following code:
var viewerStyle = {'height': '700px', 'width': '100%'};
var reportPath = 'GroupingAgg.rdl';
function viewReportClick(event) {
var reportParams = [];
reportParams.push({ name: 'ReportParameter1', labels: ['SO50756'], values: ['SO50756'] });
event.model.parameters = reportParams;
}
function App() {
return (
<div style={viewerStyle}>
<BoldReportViewerComponent
id="reportviewer-container"
reportServiceUrl = {'https://demos.boldreports.com/services/api/ReportViewer'}
processingMode = {"Local"}
reportPath = {reportPath}
viewReportClick = {viewReportClick}>
</BoldReportViewerComponent>
</div>
);
}
export default App;The model property in the event argument has the details of current processing report model.