2010-05-26 11 views
7

Chcę zrobić raport kryształu w mojej aplikacji windowsowej C#, chodzi o to, że chcę używać obiektów .net jako źródła danych raportu, znalazłem przykładowy kod jak poniżej w Internecie i używam im i to działa dobrze:Ustawić wiele obiektów jako źródło danych raportu kryształowego

 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; 

ale chcę wysłać dodatkowy przedmiot do informacji przykład szkoły dla tych powtarzających się informacji, ale nie mogę wysłać ten dodatkowy przedmiot, czy istnieje rozwiązanie, które można wysłać do wielu obiektów raport kryształowy? Oczywiście wiem, że mogę użyć wielu datatable i dataset dla źródła danych raportu kryształowego, ale tutaj chcę tylko użyć obiektów i IEnumerables jako źródła danych raportu kryształu.

Odpowiedz

0

Po wykonaniu tej czynności w trybie projektowania informuje użytkownika, że ​​nie jest obsługiwany.

Może z odnośnika zewnętrznego między datasources ...

21

Jeśli masz wiele źródła danych, takie jak 1.EmployeeClass 2.EmpployeeSkillClass

Wykonaj następujące czynności:

 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 

// Ustaw źródło danych dla każdej tabeli. upewnij się, że indeks każdej tabeli jest zbierać

// (uruchomić tryb debugowania do stwierdzenia, że ​​stoły [0] map z typem pracownika lub EmployeeSkill)

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

     crystalReportViewer1.ReportSource = report; 

// Finish !!

+0

Chciałem wiedzieć, czy masz pomysł, dlaczego mój raport jest pusty. – Enzero

+2

Dziękuję bardzo, uratowałeś mi życie :)) – ertan2002

+0

@Enzero Właśnie zobaczyłem twoje pytanie. Myślę, że możesz mieć odpowiedź. Przepraszam za spóźnioną odpowiedź – Supitchaya

Powiązane problemy