Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set multiple objects as datasource of a crystal report

I wanna make a crystal report in my c# windows application, the point is I want to use .net objects as my report datasource, I found its sample code as below in internet and use them and it works fine:

        ArrayList Mainlst = new ArrayList();
        Mainlst.Add(new testOBJ { Firstname = "test1", Lastname = "test11" });
        Mainlst.Add(new testOBJ { Firstname = "test2", Lastname = "test21" });
        Mainlst.Add(new testOBJ { Firstname = "test3", Lastname = "test31" });
        Mainlst.Add(new testOBJ { Firstname = "test4", Lastname = "test41" });
        Mainlst.Add(new testOBJ { Firstname = "test5", Lastname = "test51" });
        testCrystalReport rpt = new testCrystalReport ();
        rpt.SetDataSource(Mainlst);
        crystalReportViewer1.ReportSource = rpt;

But I want to send extra object for example school information for these repeated information, but I can't send this extra object, is there any solution that I can send multiple objects to the crystal report? Of course I know that I can use multiple datatable and dataset for a crystal report datasource but here I just want to use objects and IEnumerables as datasource of a crystal report.

like image 965
Mohsen Asfia Avatar asked May 26 '10 07:05

Mohsen Asfia


People also ask

What are the data sources you can connect from Crystal?

SAP Crystal Report can connect to any data source. This platform is use to generate the reports. All can perform different work. SAP allows some connection like Universe, SAP BEx, Query Relational, Connection HANA, Excel Spreadsheets.


1 Answers

if you have many datasource such as 1.EmployeeClass 2.EmpployeeSkillClass

Do the following :

      List<EmployeeClass> employeeList = new List<EmployeeClass>();
      employeeList.Add(new EmployeeClass() { EmpNo = "001", EmpName = "Supitchaya" });

      List<EmpployeeSkillClass> employeeSkillList = new List<EmpployeeSkillClass>();
      detList.Add(new EmpployeeSkillClass() { EmpNo = "001", Skill="C#" });
      detList.Add(new EmpployeeSkillClass() { EmpNo = "001", Skill="Java" });

//Create instant of ReportDocument :

        ReportDocument report = new RptEmployee(); //Crsytal report file

//Set datasource to each table. make sure that index of each table is collect

//(run on debug mode to find that tables[0] map with type Employee or EmployeeSkill)

        report.Database.Tables[0].SetDataSource(employeeList );
        report.Database.Tables[1].SetDataSource(employeeSkillList );

        crystalReportViewer1.ReportSource = report;

//Finish!!

like image 176
Supitchaya Avatar answered Oct 15 '22 20:10

Supitchaya