How do I link the main report with the subreport RDLC asp.net Core
- public IActionResult PrintTwo()
- {
- var dt = new DataTable();
- var dtSub = new DataTable();
- DataTable[] dtArray = new DataTable[2];
- dtArray = GetEmployeeList();
- string mimetype = "";
- int extension = 1;
- var path = $"{this._webHostEnvironment.WebRootPath}\\Reports\\ReportRdlcTwo.rdlc";
- var pathSub = $"{this._webHostEnvironment.WebRootPath}\\Reports\\subReport.rdlc";
- Dictionary<string, string> parameters = new Dictionary<string, string>();
- //Dictionary
parametersSub = new Dictionary (); - parameters.Add("prm", "Z. Apple. An apple is just an apple. BMW. The accidental propeller. Chupa");
- //parametersSub.Add("subReportParameter", "0");
- LocalReport localReport = new LocalReport(path);
- LocalReport localReportSub = new LocalReport(pathSub);
- localReport.AddDataSource("DataSetContact", dtArray[0]);
- localReportSub.AddDataSource("DataSetSub", dtArray[1]);
- //localReport.AddDataSource("DataSetContact", dtArray);
- dt = dtArray[0];
- dtSub = dtArray[1];
- var result = localReport.Execute(RenderType.Pdf, extension, parameters, mimetype);
- //var result = localReportSub.Execute(RenderType.Pdf, extension, null, mimetype);
- return File(result.MainStream, "application/pdf");
- }
- public DataTable[] GetEmployeeList()
- {
- var dt = new DataTable();
- DataTable[] dtArray = new DataTable[2];
- dtArray[0] = new DataTable("DataTable0");
- dtArray[1] = new DataTable("DataTable1");
- dtArray[0].Columns.Add("EmpId", typeof(Int32));
- dtArray[0].Columns.Add("EmpName");
- dtArray[0].Columns.Add("EmpDepart");
- dtArray[0].Columns.Add("EmpDesignation");
- dtArray[1].Columns.Add("EmpContId", typeof(Int32));
- dtArray[1].Columns.Add("EmpId", typeof(Int32));
- dtArray[1].Columns.Add("EmpContMobile");
- dtArray[1].Columns.Add("EmpContEmail");
- dtArray[1].Columns.Add("EmpContAddress");
- dtArray[1].Columns.Add("EmpContCity");
- DataRow row;
- DataRow rowTwo;
- for (int i = 0;i < 10; i++)
- {
- row = dtArray[0].NewRow();
- row["EmpId"]=i;
- row["EmpName"]= "Taha Suliman Ramadan" + i.ToString();
- row["EmpDepart"]= "Accounting DeprtMemt" + i.ToString();
- row["EmpDesignation"]= "SoftWare Engineer" + i.ToString();
- dtArray[0].Rows.Add(row);
- //------------------------------
- for (int j = 0; j < 5; j++)
- {
- int x = i * 5 + j;
- rowTwo = dtArray[1].NewRow();
- rowTwo["EmpContId"] = x;
- rowTwo["EmpId"] = i;
- rowTwo["EmpContMobile"] = "00971523215230";
- rowTwo["EmpContEmail"] = "[email protected]" + j.ToString();
- rowTwo["EmpContAddress"] = "Sharjah Gasimiya Mahata" + j.ToString();
- rowTwo["EmpContCity"] = "United Emarate Sharjah" + j.ToString();
- dtArray[1].Rows.Add(rowTwo);
- }
- }
- return dtArray;
- }
Mh AbirPosted Mar 20, 2023, 11:01 AM
Local Report version : ReportViewerCore.NETCore 15.1.17
Report Name : rptDepartment.rdlc, rptEmployeeDemoDetails.rdlc
Data Source :
Sub Report Added
Sub Report Configuration
public class HomeController : Controller
{ GetEmployeeDemoList = new List()
private List
{
new EmployeeDemo() {ID = 1, Name = "Sam", Gender ="male", Email="[email protected]"},
new EmployeeDemo() {ID = 1, Name = "Ella",Gender ="female", Email="[email protected]" },
new EmployeeDemo() {ID = 1, Name = "TG",Gender ="male", Email ="[email protected]" },
new EmployeeDemo() {ID = 1, Name = "Favor",Gender ="female", Email="[email protected]" },
new EmployeeDemo() {ID = 2,Name = "Micheal",Gender ="male",Email ="[email protected]" },
new EmployeeDemo() {ID = 2, Name = "Joe",Gender ="male", Email ="[email protected]" },
new EmployeeDemo() {ID = 2, Name="Maintain",Gender ="female",Email ="[email protected]" },
new EmployeeDemo() {ID = 3, Name = "Akeem",Gender ="male", Email ="[email protected]" },
new EmployeeDemo() {ID = 3, Name = "Boye",Gender ="male", Email ="[email protected]" },
new EmployeeDemo() {ID = 4, Name ="Chioma",Gender ="female",Email ="[email protected]" },
new EmployeeDemo() {ID = 4, Name = "Ofure",Gender ="female", Email ="[email protected]" },
new EmployeeDemo() {ID = 4, Name = "Hart",Gender ="male",Email ="[email protected]" }
};
private List departments = new List()
{
new Department() {ID = 1, Name = "Applied Mathematics" },
new Department() {ID = 2, Name = "Software" },
new Department() {ID = 3, Name = "Machine Learning" },
new Department() {ID = 4, Name = "Petroleum Engineering" },
};
private readonly ILogger _logger;
private readonly IWebHostEnvironment _webHostEnviorment;
public HomeController(ILogger logger, IWebHostEnvironment webHostEnviorment)
{
_logger = logger;
_webHostEnviorment = webHostEnviorment;
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
}
public IActionResult Index()
{
return View();
}
public IActionResult Print()
{
string renderFromat = "pdf";
string mimetype = "application/pdf";
string extension = "pdf";
Dictionary parameter = new Dictionary();
parameter.Add("ReportParameter1", "Well Come to RDLC Report");
LocalReport localReport = new LocalReport();
localReport.ReportPath= $"{this._webHostEnviorment.WebRootPath}\\Reports\\Report1.rdlc";
var pdf = localReport.Render(renderFromat);
return File(pdf, mimetype, "report." + extension);
}
public IActionResult PrintReport()
{
string renderFromat = "PDF";
string extension = "pdf";
string mimetype = "application/pdf";
using var report = new LocalReport();
// var dt = new DataTable();
var dt =departments;
report.DataSources.Add(new ReportDataSource("Department_DS", dt));
var parameters = new[] { new ReportParameter("prm1", "RDLC Sub-Report Example") };
report.ReportPath = $"{this._webHostEnviorment.WebRootPath}\\Reports\\rptDepartment.rdlc";
report.SetParameters(parameters);
//For Sub Type =======>>>
report.SubreportProcessing += new SubreportProcessingEventHandler(subReportProcessing);
var pdf = report.Render(renderFromat);
return File(pdf, mimetype, "report." + extension);
}
void subReportProcessing(object sender,SubreportProcessingEventArgs e)
{
var ID = Convert.ToInt32(e.Parameters[0].Values[0]);
// var employeegroup = Employees.FindAll(x => x.ID == ID);
int empId = Convert.ToInt32((e.Parameters["ID"].Values[0].ToString()));
//var dt2 = GetEmployeeDetailsList().Select("EmpId=" + empId);
var dt = GetEmployeeDemoList;
var result = dt.FindAll(x => x.ID == empId);
var res = result;
ReportDataSource ds = new ReportDataSource("EmployeeDemo_DS", result);
e.DataSources.Add(ds);
}
}
Report Dowanload
My Git Hub Link
https://github.com/MH-Abir97/RDLC
Amit GuptaPosted Feb 10, 2021, 1:36 PM
taha sulimanPosted Feb 10, 2021, 12:46 PM
Amit GuptaPosted Feb 10, 2021, 10:45 AM
taha sulimanPosted Feb 10, 2021, 10:05 AM
Amit GuptaPosted Feb 9, 2021, 10:15 AM