TL;DR
An RDLC report (Report Definition Language Client-side) is a Microsoft report format that lets you design reports visually and render them locally using data supplied by your application, such as business objects, .NET datasets, or JSON data, without requiring a report server. This makes RDLC reports ideal for embedded reporting and paginated document generation in .NET applications.
Introduction
If you’ve ever needed to turn an in-memory list of objects, a DataSet, or a JSON array into a professional report without setting up a database connection just to preview your layout, you’ve encountered one of the most common reporting challenges in .NET applications. RDLC reports were designed to solve this exact problem.
RDLC is a Microsoft reporting format closely related to RDL (Report Definition Language), which SSRS uses. Unlike RDL reports that are processed on a report server, RDLC reports are processed locally within the application and use data supplied at runtime.
This flexibility makes RDLC reports a popular choice for embedded reporting in .NET applications. Developers can bind reports directly to business objects, DataSets, or JSON data and create professional reports without building additional data connectors or exposing separate reporting data sources.
Developers typically create RDLC reports using either the native Visual Studio RDLC designer or a dedicated reporting solution such as Bold Reports® designer. While Visual Studio provides the basic tools required to design and edit RDLC files, Bold Reports designer offers a modern drag-and-drop interface, interactive report preview, and advanced report items.
In this tutorial, you’ll learn how to create an RDLC report using Bold Reports report designer. We’ll cover dataset creation, report design best practices, JSON data preview, parameters, and the key differences between RDLC and RDL reports.
RDLC report fundamentals
Before creating an RDLC report, it’s helpful to understand how RDLC reporting works. This makes it easier to design datasets, map fields correctly, and troubleshoot reporting issues.
How RDLC reports are processed
-
- The report definition, including the layout, field bindings, formatting, and expressions, is stored in an .rdlc file.
- At runtime, the application supplies data through a business object collection, DataTable, DataSet, or JSON data source.
- The RDLC processing engine combines the report definition with the supplied data and renders the report locally within the application, without requiring a report server.
Why this matters
- No live data connection required: RDLC reports don’t store a live database connection, allowing developers to design and preview reports with sample data before connecting to production data sources.
- Dataset structure is critical: The dataset fields defined in the RDLC report designer must match the data the application supplies. Correct field mapping helps prevent common “report shows no data” issues.
- Easy to reuse across environments: Because an .rdlc file contains only the report definition, not the data, you can use the same report across development, testing, and production environments as long as the dataset structure stays consistent.
RDLC vs RDL reports: What’s the difference?
Both RDLC and RDL files are based on Microsoft’s Report Definition Language, but they differ in how reports are processed and deployed.
| Feature | RDLC reports | RDL reports |
| Processing | Processed locally within the application | Processed by an SSRS or report server |
| Data source | Data is supplied by the application at runtime | Connects directly to configured data sources |
| Server requirement | No report server required | Requires an SSRS or compatible report server |
| Deployment | Embedded in .NET applications | Deployed and managed on a report server |
| Scalability | Designed for local report processing within an application | Designed for server-based report processing and centralized management |
| Management | Managed within the application | Centrally managed through the report server |
| Typical use cases | Desktop applications, local reporting, embedded reporting | Enterprise reporting, scheduled reports, web-based reporting |
Prerequisites
-
- A Bold Reports® subscription (a free trial covers everything in this tutorial).
- The Standalone report designer installed on your Windows machine.
For a documentation-focused walkthrough, refer to the official guide on creating RDLC reports in the standalone report designer. This tutorial expands that workflow with additional guidance for creating and deploying RDLC reports.
Step 1: Launch the Bold Reports designer
Open the Bold Reports RDLC report designer from your Windows Start menu or desktop shortcut to access the design surface, Items pane, Properties pane, and Data pane for building your report.

Step 2: Create an RDLC dataset
- Click the Data icon in the Report Designer to open the data configuration pane.
- In the data pane, click the NEW DATA option to create a new data set for your RDLC report.

Report designer data pane - Change the data set name to Sales for this report.
- Add the required data fields with the appropriate data types. Here, we added the data fields ProductCategory, SubCategory, OrderYear, OrderQtr, and Sales with appropriate data types.

Create custom data fields - After adding the required data fields, click OK. Created fields are displayed under the Sales data set in the data pane. Now the data set is ready to add in tables or visuals to the RDLC report.

Data fields listed on a data pane
Step 3: Add report items to the design
Add a table to the report
- First, let’s add a table to the design surface by dragging a table report item from the Items pane.

Add table to report design - Select the table cell and click on the Data Assign menu icon to open the menu. Select the Add Text option.

Set text to the table header cell - Enter Product Category in the text area and click Add.

Table cells’ add text dialog - Select a column and right-click on the column gripper. Then insert a new column to the right of the current one.

Insert new column in the table report item - Similarly, add columns and set the headers Sub Category, Order Year, Order Qtr, and Sales.
- To customize the table header appearance, click on the header row gripper. The properties panel shows the common properties of header cells. To change the background color, open the color picker.

Change the table header row background color, font, and alignment - Select the body cell and click the Data assign icon to open the data assign menu.

Assign data to table body cell - Choose the required data fields for each cell. Refer to the assign data documentation to learn more.

Data assigned to all cell of table body
Add report header
We are also going to add a header to the RDLC report:
- Right-click on the design surface and select Add Header.

Add header to the RDLC report - Click the header section and change the background color in the properties pane.

Set background color for the report header - Drag the TextBox report item to the header section and input the title text.
- Select the TextBox item and change the font properties, such as size and color, in the properties pane.

Add header title and customize the appearance
Step 4: Input the JSON data and view the RDLC report
To preview the report, provide sample JSON data whose property names match the fields defined in the Sales dataset. This helps validate the report layout and data mappings before connecting runtime data.
-
- Click Preview at the top-right corner of the toolbar to open the Preview Data pop-up as in the following.

RDLC report preview data pop-up 2. Clear the existing sample text and input your JSON array collection or copy and paste the following JSON data.
The key names in the JSON array input should match the data field names used during dataset creation.
[{"ProductCategory": "Accessories", "SubCategory": "Helmets", "OrderYear": "2002", "OrderQtr": "Q1", "Sales": 4945.6925}, {"ProductCategory": "Components", "SubCategory": "Road Frames", "OrderYear": "2002", "OrderQtr": "Q3", "Sales": 957715.1942}, {"ProductCategory": "Components", "SubCategory": "Forks", "OrderYear": "2002", "OrderQtr": "Q4", "Sales": 23543.1060}, {"ProductCategory": "Bikes", "SubCategory": "Road Bikes", "OrderYear": "2002", "OrderQtr": "Q1", "Sales": 3171787.6112}, {"ProductCategory": "Accessories", "SubCategory": "Helmets", "OrderYear": "2002", "OrderQtr": "Q3", "Sales": 33853.1033}, {"ProductCategory": "Components", "SubCategory": "Wheels", "OrderYear": "2002", "OrderQtr": "Q4", "Sales": 163921.8870}, {"ProductCategory": "Bikes", "SubCategory": "Road Bikes", "OrderYear": "2003", "OrderQtr": "Q2", "Sales": 4119658.6506}, {"ProductCategory": "Clothing", "SubCategory": "Socks", "OrderYear": "2003", "OrderQtr": "Q3", "Sales": 6968.6884}, {"ProductCategory": "Bikes", "SubCategory": "Road Bikes", "OrderYear": "2003", "OrderQtr": "Q4", "Sales": 3734891.6389}, {"ProductCategory": "Components", "SubCategory": "Mountain Frames", "OrderYear": "2002", "OrderQtr": "Q3", "Sales": 608352.8754}]
JSON array data input in the RDLC report 3. Click OK in the Preview Data dialog, and the report displays as in the following image.

RDLC report preview with JSON data 4. Click Close Preview. Select the save icon in the toolbar to save a copy of the report design to your local machine.
Refer to the guide on viewing, printing, and exporting RDLC reports in your application for instructions on rendering RDLC reports and enabling export functionality using local objects, business objects, and datasets.

Save report to local path 5. To export the report, use the available export options supported by your report viewer or deployment environment.
- Choose the required format, such as PDF, Word, or Excel.
- Review the exported report to ensure page breaks, formatting, fonts, and layouts render as expected across different output formats.
- Click Preview at the top-right corner of the toolbar to open the Preview Data pop-up as in the following.
How do parameters work in RDLC reports?
RDLC report parameters enable users to filter and customize report data at runtime without modifying the report design. You can configure parameters with properties such as a name, prompt, data type, default values, and available values. To control the displayed data, the parameter must be applied in a filter, expression, or visibility setting within the report.
For example, a ProductID parameter can be used to filter the dataset and display only the product records that match the value selected by the user, improving report relevance and usability.
For a step-by-step guide to creating and configuring RDLC report parameters, refer to our guides on how to add report parameters to a report and adding report parameters to your report using Bold Reports designer.
Using expressions for dynamic RDLC reports
Expressions are a key part of RDLC report design, enabling calculated fields, dynamic text, conditional formatting, and aggregations without changing the dataset.
Common examples include:
-
- Conditional formatting: Highlight a cell red when Sales falls below a specified threshold.
- Calculated fields: Display values such as Sales * TaxRate without adding a separate dataset field.
- Aggregates: Show running totals or grand totals using Sum expressions.
- Dynamic text: Create headers like Sales Report – 2026 based on parameter selections.
Because RDLC reports use the same expression language as RDL and SSRS reports, our SSRS expressions cheat sheet can serve as a practical reference for aggregate, formatting, string, and conditional expressions in RDLC report design.
Practical RDLC reporting scenarios & examples
RDLC reports can support a variety of business reporting needs within .NET applications. Common examples include:
- Sales summary reports: Display sales data by category, product, region, or period, with calculated totals and summary metrics for reporting and review.
- Invoice and statement reports: Generate pixel-perfect invoices, receipts, billing statements, and other customer-facing documents with dynamic data and branding.
- Master-detail reports: Present hierarchical data, such as orders and their corresponding line items, in a clear and organized format. Our guide on creating master-detail reports explains this approach in greater detail.
- Inventory and operational reports: Monitor stock levels, inventory movements, production output, and operational activities using structured paginated reports that can be exported, printed, and shared.
- Multi-format export reports: Create reports once and export them to PDF, Word, and Excel while maintaining consistent formatting and usability across formats.
Why does an RDLC report show no data? Common issues and fixes
An RDLC report usually shows no data when the field names in the report dataset do not exactly match the names in the data you supply. Compare the dataset fields with your JSON keys, DataTable columns, or business object properties, including spelling and case, then reload the preview.
The following troubleshooting tips can help you quickly identify and resolve the most common RDLC report design problems.
- RDLC report displays no data: This typically occurs when dataset field names do not match the field names in the preview JSON or runtime data source. Verify that all field names match exactly.
- A report column appears blank: Ensure the report cell is properly bound to a dataset field. Unassigned cells can occur when new columns are added after the initial data-binding setup.
- RDLC report preview works, but live data does not display: Compare the dataset schema with your DataTable columns or business object properties. The field names must match exactly for successful data binding.
- Report formatting or header styles are not applied correctly: Apply styles at the row or section level when formatting shared report elements, rather than formatting individual cells separately.
- Dates, currency, or numbers display incorrectly: Use formatting properties or expressions to control how values are displayed instead of relying solely on the dataset field type.
- Report layout changes after exporting to PDF, Word, or Excel: Test export formats throughout the design process, as page breaks, column widths, and fonts may render differently from the report preview.
- Report parameters do not filter data correctly: Verify that the parameter is referenced in a dataset filter or expression. Creating a parameter alone does not automatically filter report data.
RDLC report design best practices checklist
Follow these best practices to create maintainable, high-performing, and user-friendly RDLC reports:
-
- Define dataset fields early: Ensure dataset field names and data types match your actual data source before investing time in report layout design.
- Preview with representative data: Test reports frequently using realistic sample data instead of waiting for a live data source.
- Apply consistent styling: Format header rows, groups, and shared elements at the row or group level rather than styling individual cells repeatedly.
- Use meaningful parameter names: Keep parameter names aligned with the dataset fields they filter for better readability and easier maintenance.
- Test all export formats: Verify report layouts in PDF, Word, and Excel, not just the report designer preview.
- Version your RDLC files: Save incremental versions of the .rdlc file or use source control before making significant layout changes.
- Document complex expressions: Record the purpose of conditional formatting, calculated fields, and other non-obvious expressions to help future report authors maintain the report.
Should you use Visual Studio or Bold Reports designer for RDLC reports?
Regardless of the design tool used, RDLC reports require runtime data binding. In production applications, developers typically retrieve data using C#, populate a DataTable, DataSet, or business object collection, and pass that data to the RDLC report during rendering. For a complete implementation example, see our guide on RDLC reports in ASP.NET Core with Report Viewer.
| Capability | Visual Studio RDLC designer | Bold Reports designer |
| RDLC design | Yes | Yes |
| Works inside a Visual Studio solution | Yes | No |
| Standalone designer | No | Yes |
| Setup | Visual Studio with the Microsoft RDLC Report Designer extension | Standalone report designer installed on Windows |
| Runtime data binding | Required | Required |
Next steps: RDLC reporting resources and guides
After creating and previewing your first RDLC report, explore more advanced reporting concepts and implementations. If you want to integrate reports into a production application, check out RDLC reports in ASP.NET Core with Report Viewer, which explains how to render and display RDLC reports in ASP.NET Core applications. For more advanced layouts, the SSRS Tablix data region guide covers tables, matrices, lists, and data grouping in detail, concepts that also apply to RDLC reports.
Organizations migrating from legacy reporting platforms can also review our guide on converting Crystal Reports to RDL, which provides valuable insights into RDL fundamentals and migration considerations. You can also explore the Bold Reports live demos to interact with real report samples and export options.
Conclusion
Once your RDLC report is designed and validated, the next step is to integrate it with an RDLC Report Viewer to render, print, filter, and export reports directly within your .NET application.
Ready to create and deploy RDLC reports faster? Start a 30-day free trial, request a personalized demo, or watch our tutorial to discover how Bold Reports simplifies RDLC report design, deployment, and management for .NET reporting applications.
Frequently asked questions
-
- 1.
Do I need a database to design an RDLC report?
No. You can design and preview an RDLC report using sample data such as JSON arrays, DataTables, DataSets, or business objects without connecting to a live database. This lets you build and validate report layouts early in development, before integrating production data sources.
- 2.
How do I bind JSON data to an RDLC report for preview?
Open the Preview Data dialog in the report designer and provide a JSON array that matches the dataset schema defined in the report. The JSON property names must match the dataset field names exactly. Once loaded, you can instantly preview and validate the report output without writing application code.
- 3.
Can RDLC reports connect to a SQL database?
Yes. Although an RDLC report does not directly store data source connections, your application can retrieve data from SQL Server or other databases and pass it to the report at runtime as a DataTable, DataSet, business object collection, or other supported data structure.
- 4.
What report items can I add to an RDLC report?
RDLC reports support a wide variety of report items, including tables, matrices, lists, text boxes, charts, gauges, images, and report headers or footers. These elements enable developers to create everything from simple tabular reports to complex business reports and formatted documents.
- 5.
How do I add parameters to an RDLC report?
Create a report parameter in the designer, assign an appropriate data type, and configure prompts or default values as needed. You can then reference parameters in filters, expressions, and visibility settings, allowing users to customize report output dynamically without modifying the report layout.
- 6.
Can I use expressions in an RDLC report?
Yes. RDLC reports support expressions for calculations, conditional formatting, aggregations, string manipulation, and dynamic text generation. Because RDLC uses the same expression language as SSRS and RDL reports, developers can use familiar functions to create calculated fields, apply business rules, and display dynamic report values.
- 7.
Is the Bold Reports Designer free to try?
Yes. Bold Reports offers a free trial that includes access to the standalone report designer used in this tutorial. The trial lets you create, preview, export, and evaluate RDLC reports and related reporting features before choosing a subscription plan for production use.
- 1.




