2011-09-12 21 views
5

Đi qua Báo cáo thông số để subreport trong VS 2010 RDLCĐi qua Báo cáo thông số để subreport trong VS 2010 RDLC

Tôi đang gặp một số khó khăn xác định và truyền tham số báo cáo cho subreports trong VS 2010. Trong VS 2008 trong giao diện thiết kế tôi đã có thể nhấp chuột phải và xác định tham số báo cáo và thông số báo cáo được chuyển qua.

Trong VS 2010 lời nhắc bị thiếu. Vì vậy, câu hỏi của tôi là, làm thế nào tôi có thể vượt qua một giá trị từ một báo cáo cha mẹ cho một subreport trong VS 2010?

Thêm vào đó, đây là những gì được hiển thị trong hộp thoại Report Thuộc tính bên trong VS 2010:

Đối với thời gian được tôi đã xác định các tham số trong subreport bằng tay trong XML nhưng tôi nhận được lỗi từ báo cáo chính khi tôi cố gắng chuyển một tham số của bất kỳ loại nào cho subreport.

Lỗi này là:

An error occurred during local report processing. 

Value cannot be null. Parameter name: value 

ở đâu tôi không có một tham số được đặt tên giá trị được xác định ở bất cứ đâu.

Trả lời

13
  • Chuyển đến subreport ->Báo cáo dữ liệu Pane ->thông số và thêm tham số bạn muốn nhận.

  • Chuyển đến MainReport ->Kích chuột phải vào subreport ->Subreport Thuộc tính ->thông số và thêm tên paramter cùng và chọn giá trị tương ứng từ menu thả xuống.

  • Xử lý sự kiện SubreportProcessing và đặt nguồn dữ liệu cho subreport. Trong trường hợp của tôi, nguồn dữ liệu báo cáo chính là loại List<Order> và tham số là OrderID. Mã mẫu bên dưới.

ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SetSubDataSource); 
public void SetSubDataSource(object sender, SubreportProcessingEventArgs e) 
{ 
    var mainSource = ((LocalReport) sender).DataSources["MainDataSet1"]; 
    var orderId = int.Parse(e.Parameters["OrderID"].Values.First()); 
    var subSource = ((List<Order>)mainSource.Value).Single(o => o.OrderID == orderId).Suppliers; 
    e.DataSources.Add(new ReportDataSource("SubDataSet1", subSource)); 
} 
+1

** Rất quan trọng ** Tên của 'ReportDataSource' trong' phương pháp e.DataSources.Add' phải khớp với tên của nguồn dữ liệu trong subreport CHÍNH XÁC. –

+0

Cách thay thế để xác định nguồn con như vậy là sử dụng thẻ này: Điều này sẽ làm điều tương tự và giúp bạn tiết kiệm 3 dòng mã đó. –

0

var subSource = ((danh sách) mainSource.Value) .Single (o => o.OrderID == OrderID) .Suppliers;

những gì nó có nghĩa là

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