2014-12-01 6 views
10

Sto tentando di creare un report di SQL Server Reporting Services (file .rdlc) e connettere questo report ad alcuni set di dati che vengono generati nel codice (no direct Connessione SQL Server).Fornire dati da una classe di codice alla finestra di progettazione di Reporting Services in VS 2013

ho creare una classe ReportDataProvider con alcuni metodi di istanza che restituiscono IList<T> di vari gruppi di criteri - ma io non riesco a trovare un modo per rendere questi dati forniscono metodi presentarsi nella finestra di progettazione di Reporting Services all'interno di Visual Studio 2013.

Quando guardo la finestra di dialogo che appare dopo aver cliccato su Add DataSet sul nodo Datasets nella finestra di esplorazione Report Data, vedo un sacco delle mie classi elencate qui - ma non la mia classe di fornitore di dati.

enter image description here

c'è qualcosa di speciale che ho bisogno di essere a conoscenza (rendere la classe static? Decorare con qualche attributo?) In modo che esso per presentarsi in tale elenco a discesa delle possibili fonti di dati? Ho provato varie cose, ma non sono riuscito a trovare alcun modo per farlo funzionare correttamente ...

risposta

3

Faccio qualche ricerca e provo diversi modi per aggiungere classi. Sfortunatamente, è possibile che non sia in grado di visualizzare le classi statiche in questo designer. Ho provato diversi modi ma senza fortuna.

Per le classi non statiche questo manuale funziona per me ogni volta, anche con Interfaces come IList, ma io non rappresentano qui:

  1. Assicurarsi che spazio dei nomi con i tuoi classi report sono disponibili nel progetto con file .rdlc. Può essere che è necessario aggiungere riferimento.
  2. Rapporto dati di scrittura Classe e soluzione di ricostruzione.
  3. Chiudere e riaprire i file .rdlc nel VS.

ho usando CONTRO 2013 ultimo aggiornamento 2.

Questo è il mio classi:

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

questo è quello che ho ottenuto in designer dopo mi passano attraverso manuale:

enter image description here

+0

Grazie per i vostri sforzi - sfortunatamente, è praticamente quello che ho provato anche io - e non funziona mai per me. Non importa se renderò la classe oi metodi 'static' o no, non importa se li metto nello stesso assembly del report o in uno diverso (di riferimento) - non vedo mai la mia classe menzionata come un valido' DataSource'. .... –

+1

Quando cerco in giro, trovo questa [risposta] (http://stackoverflow.com/a/4888113/1849444). Mamma questa è la risposta al tuo problema? Per quanto riguarda l'utilizzo di un tipo generico. –

0

Aveva un problema simile. Trovato se è riuscito a ottenere una build senza errori, il mio spazio dei nomi sembrerebbe selezionare tra le origini dati.

Problemi correlati