2010-05-26 5 views
7

Ich möchte einen Crystal Report in meiner C# Windows-Anwendung machen, der Punkt ist, ich möchte .net Objekte als meine Berichtsdatenquelle verwenden, fand ich seine Beispielcode wie unten im Internet und verwenden sie und es funktioniert gut:Set mehrere Objekte als Datenquelle eines Crystal Reports

 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; 

aber ich will für diese wiederholten Informationen zusätzliches Objekt zum Beispiel Schulinformationen senden, aber ich kann diese zusätzliche Aufgabe nicht senden, gibt es eine Lösung, die ich mehrere Objekte senden der Kristall Bericht? Natürlich weiß ich, dass ich mehrere Dataset und Dataset für eine Crystal Report-Datenquelle verwenden kann, aber hier möchte ich nur Objekte und IEnumerables als Datenquelle eines Crystal Reports verwenden.

Antwort

0

Wenn Sie dies im Entwurfsmodus tun, wird Ihnen mitgeteilt, dass dies nicht unterstützt wird.

Vielleicht mit einem Xref zwischen Datenquellen ...

21

, wenn Sie viele Datenquelle wie 1.EmployeeClass 2.EmpployeeSkillClass

Sie folgende Voraussetzungen erfüllt sein:

 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" }); 

// erzeuge Zeitpunkt des ReportDokuments:

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

// Setzen Sie die Datenquelle auf jede Tabelle. stellen Sie sicher, dass Index jeder Tabelle sammeln wird

// (laufen auf den Debug-Modus zu finden, dass Tabellen [0] Karte mit Typ Mitarbeiter oder EmployeeSkill)

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

     crystalReportViewer1.ReportSource = report; 

// Fertig !!

+0

Ich wollte wissen, ob Sie eine Idee haben, warum mein Bericht leer ist – Enzero

+2

Vielen Dank, Sie haben mein Leben gerettet :)) – ertan2002

+0

@Enzero Ich habe gerade Ihre Frage gesehen. Ich denke, du hast vielleicht die Antwort. Entschuldige die späte Antwort – Supitchaya