2015-03-27 18 views
5

Sto sviluppando un'applicazione web asp.net mvc 5. Esiste una libreria di classi solo per i rapporti telerik [no trdx]. Sto usando TypeReportSource per risolvere il report e l'evento NeedDataSource del file di report per recuperare i dati dal database. Nell'intero progetto sto usando la tecnica del constructor injection (structuremap) ma qui l'iniezione del costruttore non funziona in quanto il rapporto telerik supporta solo il costruttore senza parametri.Telerik Reporting ObjectDataSource con dipendenza dipendenza

Come passare i dati a DataSource del report? Non voglio aggiungere un contenitore IoC separato per la libreria di classi poiché è condiviso da più progetti con configurazione separata.

risposta

1

Nella modalità "Libreria report Telerik", ogni report è composto da 3 file per impostazione predefinita. Supponiamo di creare un rapporto denominato "ProductReport" nel progetto di report. genererà ProductReport.cs, ProductReport.Designer.cs, ProductReport.resx

seguito è il codice "ProductReport.cs":

public partial class ProductReport : Telerik.Reporting.Report 
{ 
    public ProductReport() 
    { 
     // 
     // Required for telerik Reporting designer support 
     // 
     InitializeComponent(); 

     // 
     // TODO: Add any constructor code after InitializeComponent call 
     // 
    } 
} 

Penso che una delle possibilità è quella di aggiungere un altro costruttore con parametri (s) che si desidera iniettare in un'istanza di report, includere l'origine dati e ricordare di chiamare "InitializeComponent()".

Un altro lato positivo di questa soluzione è che non avrà alcun impatto sull'utilizzo del progettista di report e la modifica degli elementi del report da parte del progettista stesso.