2010-05-26 46 views
7

Tôi muốn tạo báo cáo tinh thể trong ứng dụng C# windows, điểm là tôi muốn sử dụng đối tượng .net làm nguồn dữ liệu báo cáo của mình, tôi tìm thấy mã mẫu của nó như dưới đây trên internet và sử dụng họ và nó hoạt động tốt:Đặt nhiều đối tượng làm nguồn dữ liệu của báo cáo tinh thể

 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; 

nhưng tôi muốn gửi thêm đối tượng cung cấp thông tin ví dụ trường đối với các thông tin lặp đi lặp lại, nhưng tôi không thể gửi đối tượng phụ này, là có bất kỳ giải pháp mà tôi có thể gửi nhiều đối tượng để báo cáo pha lê? Tất nhiên tôi biết rằng tôi có thể sử dụng nhiều datatable và dữ liệu cho một nguồn dữ liệu báo cáo tinh thể nhưng ở đây tôi chỉ muốn sử dụng các đối tượng và IEnumerables như nguồn dữ liệu của một báo cáo tinh thể.

Trả lời

0

Khi bạn làm điều này trên Chế độ thiết kế, nó cho bạn biết rằng nó không được hỗ trợ.

Có lẽ với một Xref giữa datasources ...

21

nếu bạn có nhiều nguồn dữ liệu như 1.EmployeeClass 2.EmpployeeSkillClass

Đừng như sau:

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

// Tạo ngay lập tức của ReportDocument:

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

// Đặt nguồn dữ liệu cho mỗi bảng. đảm bảo rằng chỉ số của mỗi bảng được thu thập

// (chạy trên chế độ gỡ lỗi để thấy rằng bảng [0] bản đồ với loại nhân viên hoặc EmployeeSkill)

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

     crystalReportViewer1.ReportSource = report; 

// Kết thúc !!

+0

Tôi muốn biết nếu bạn có ý tưởng tại sao báo cáo của tôi sắp hết trống – Enzero

+2

cảm ơn bạn rất nhiều, bạn đã cứu mạng :)) – ertan2002

+0

@Enzero Tôi vừa xem câu hỏi của bạn. Tôi nghĩ bạn có thể có câu trả lời. Xin lỗi vì trả lời muộn – Supitchaya

Các vấn đề liên quan