2015-03-27 9 views
5

Ich entwickle eine asp.net mvc 5 Web-Anwendung. Es gibt eine Klassenbibliothek nur für Telerik-Berichte [no trdx]. Ich verwende TypeReportSource zum Auflösen des Berichts und des NeedDataSource-Ereignisses der Berichtsdatei zum Abrufen von Daten aus der Datenbank. Im ganzen Projekt verwende ich die Konstruktorinjektion (Strukturplan), aber hier funktioniert die Konstruktorinjektion nicht, da der telerik report nur den parameterlosen Konstruktor unterstützt.Telerik Reporting ObjectDataSource mit Abhängigkeitsinjektion

Wie Daten an DataSource des Berichts übergeben? Ich möchte keinen separaten IoC-Container für die Klassenbibliothek hinzufügen, da dieser von mehreren Projekten mit separater Konfiguration gemeinsam genutzt wird.

Antwort

1

Im "Telerik Report Library" -Modus besteht jeder Bericht standardmäßig aus 3 Dateien. Angenommen, ich erstelle einen Bericht namens "ProductReport" im Berichtsprojekt. es wird ProductReport.cs, ProductReport.Designer.cs, ProductReport.resx

Im Anschluss an die "ProductReport.cs" Code erzeugen: wird

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

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

Ich denke, eine der Option anderen Konstruktor mit Parameter hinzufügen (s), die Sie in die Report-Instanz einfügen möchten, schließen Sie die Datenquelle ein und vergessen Sie nicht, "InitializeComponent()" aufzurufen.

Eine weitere gute Seite dieser Lösung ist, dass sie sich nicht auf die Verwendung des Berichtsdesigners und die Änderung der Berichtselemente durch den Designer selbst auswirkt.