2014-12-01 40 views
10

Próbuję utworzyć lokalny raport SQL Server Reporting Services (plik .rdlc) i połączyć ten raport z niektórymi zbiorami danych, które generuję w kodzie (brak bezpośredniego Połączenie SQL Server).Podaj dane z klasy kodu do projektanta Reporting Services w VS 2013

utworzyć klasę ReportDataProvider z niektórych metod instancji, które zwracają IList<T> różnych zestawów kryteriów - ale nie wydaje się znaleźć sposób, aby te dane świadczące metod pojawiają się w projektanta Reporting Services wewnątrz Visual Studio 2013

Kiedy patrzę na okno dialogowe, które pojawia się po kliknięciu na Add DataSet na węźle Datasets w oknie eksploratora Report Data, widzę tam tonę moich klas, ale nie mojej klasy dostawcy danych.

enter image description here

Czy jest coś specjalnego muszę być świadomy (marka klasa static? Ozdobić go z jakiegoś atrybutu?) W celu użycia go, aby pokazać się w tej liście rozwijanej możliwych źródeł danych? Próbowałem różnych rzeczy, ale nie udało mi się znaleźć sposobu, aby to działało poprawnie ...

Odpowiedz

3

Wykonuję badania i próbuję różnych sposobów dodawania zajęć. Niestety zdarza się, że użytkownik nie widzi klas statycznych w tym projektancie. Próbowałem na różne sposoby, ale bez powodzenia.

Dla niezarejestrowanych klas statycznych ta instrukcja działa na mnie za każdym razem, nawet z Interfaces jak IList, ale nie stanowią tutaj:

  1. Upewnij się, że przestrzeń nazw z raportu Dane klas dostępnych w projekcie z plikami .rdlc. Możliwe, że musisz dodać referencję.
  2. Napisz klasę raportu danych i przebuduj rozwiązanie.
  3. Zamknij i otwórz ponownie pliki .rdlc w swojej VS.

I przy użyciu VS 2013 Ostateczny Aktualizacja 2.

To jest moje klasy:

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

To jest to, co mam w projektanta po tym jak przejść przez instrukcji:

enter image description here

+0

Dziękuję za twoje wysiłki - niestety, to jest to samo, co próbowałem - i to po prostu nigdy nie działa dla mnie. Nieważne, czy zrobię klasę lub metody "statyczne", czy nie, bez względu na to, czy umieściłem je w tym samym zestawie, co raport, czy w innym (odniesionym) - po prostu nigdy nie widzę, aby moja klasa była wymieniona jako poprawne 'DataSource'. .... –

+1

Kiedy szukam w okolicy, uważam, że to [odpowiedź] (http://stackoverflow.com/a/4888113/1849444). Maby, to jest odpowiedź na twój problem? O ile używasz rodzaju ogólnego. –

0

Miał podobny problem. Znaleziono, jeśli udało się uzyskać kompilację bez błędów, wtedy moja przestrzeń nazw wydaje się wybierać w źródłach danych.