2014-12-01 17 views
10

Tôi đang cố gắng tạo báo cáo Dịch vụ báo cáo SQL Server cục bộ (.rdlc tệp) và kết nối báo cáo này với một số tập dữ liệu mà tôi tạo trong mã (không trực tiếp Kết nối SQL Server).Cung cấp dữ liệu từ lớp mã cho trình thiết kế Reporting Services trong VS 2013

tôi tạo ra một lớp ReportDataProvider với một số phương pháp dụ mà trở IList<T> cho bộ khác nhau của tiêu chí - nhưng tôi dường như không thể tìm thấy một cách để làm cho những dữ liệu cung cấp các phương pháp hiển thị trong thiết kế dịch vụ báo cáo bên trong Visual Studio 2013.

Khi tôi nhìn vào hộp thoại xuất hiện sau khi nhấp vào Add DataSet trên nút Datasets trong cửa sổ trình khám phá Report Data, tôi thấy rất nhiều lớp được liệt kê ở đó - nhưng không phải lớp nhà cung cấp dữ liệu của tôi.

enter image description here

Có điều gì đặc biệt tôi cần phải nhận thức được (làm cho lớp static? Trang trí nó với một số thuộc tính?) Để cho nó để hiển thị trong danh sách thả xuống mà nguồn dữ liệu có thể? Tôi đã thử nhiều thứ khác nhau, nhưng không tìm thấy cách nào để làm việc này đúng cách ...

Trả lời

3

Tôi thực hiện một số nghiên cứu và thử các cách khác nhau để thêm lớp học. Thật không may nó happends rằng bạn không thể nhìn thấy các lớp tĩnh trong thiết kế này. Tôi đã thử những cách khác nhau nhưng không may mắn.

Đối với các lớp học không tĩnh hướng dẫn này làm việc cho tôi mọi lúc, ngay cả với Interfaces như IList, nhưng tôi không thể hiện nó ở đây:

  1. Hãy chắc chắn rằng không gian tên với lớp Báo cáo dữ liệu của bạn có sẵn trong dự án của bạn với tệp .rdlc. Có thể là bạn cần thêm tham chiếu.
  2. Viết báo cáo dữ liệu Lớp và xây dựng lại giải pháp.
  3. Đóng và mở lại các tệp .rdlc trong VS của bạn.

tôi sử dụng VS 2013 cuối cùng Cập nhật 2.

Đây là lớp học của tôi:

using System.Collections.Generic; 

namespace YourReportNamespace 
{ 
    public class ReportClass 
    { 
     public List<string> TestReportData() 
     { 
      return new List<string>(); 
     } 
     public static List<string> StaticTestReportData() 
     { 
      return new List<string>(); 
     } 
    } 


    public class ReportWithFieldsClass 
    { 
     private List<string> Data = new List<string>(); 

     public List<string> TestReportData() 
     { 
      return Data; 
     } 

     public List<string> TestReportData2() 
     { 
      return Data; 
     } 

     public static List<string> StaticTestReportData() 
     { 
      return new List<string>(); 
     } 
    } 

    public static class ReportWithFieldsStaticClass //This class will not appear 
    { 
     private static List<string> Data = new List<string>(); 

     public static List<string> StaticTestReportDataFromField() 
     { 
      return Data; 
     } 
     public static List<string> StaticTestReportData() 
     { 
      return new List<string>(); 
     } 
    } 
} 

Đây là những gì tôi đã nhận trong thiết kế sau khi tôi đi qua thủ công:

enter image description here

+0

Cảm ơn những nỗ lực của bạn - thật không may, đó cũng là những gì tôi đã thử - và nó không bao giờ làm việc cho tôi. Cho dù tôi có tạo lớp hay phương thức 'static' hay không, cho dù tôi đặt chúng trong cùng một assembly như báo cáo hay một phần khác (tham chiếu) - tôi chưa bao giờ thấy lớp của mình được nhắc đến như một' DataSource' hợp lệ. .... –

+1

Khi tôi tìm kiếm xung quanh, tôi tìm thấy [câu trả lời] này (http://stackoverflow.com/a/4888113/1849444). Maby đây là câu trả lời cho vấn đề của bạn? Theo như bạn sử dụng loại chung. –

0

Đã xảy ra sự cố tương tự. Tìm thấy nếu được quản lý để có được một xây dựng không có lỗi thì không gian tên của tôi sẽ xuất hiện để lựa chọn trong các nguồn dữ liệu.

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