Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In manchen Fällen musst du Eigenschafts- und Feldwerte in deinen benutzerdefinierten Assemblerklassen initialisieren, wenn du sie instanziierst. Sie müssen höchstwahrscheinlich Ihre benutzerdefinierten Klassen mit Werten initialisieren, die Ihnen aus den globalen Objektsammlungen des Berichts zur Verfügung stehen. Das tun Sie, indem Sie die OnInit-Methode des Code-Objekts eines Berichts überschreiben. Um auf OnInit zuzugreifen, verwenden Sie das Code-Element der Berichtsdefinition. Es gibt zwei Techniken zur Initialisierung von Eigenschafts- oder Feldwerten der Klassen in einer benutzerdefinierten Assembly, die du in deinem Bericht verwenden möchtest: Du kannst entweder eine neue Instanz deiner Klasse mit OnInit deklarieren und erstellen, oder du kannst eine öffentlich verfügbare Methode mit OnInit aufrufen.
Globale Objektsammlungen und Initialisierung
Mehrere Sammlungen stehen dir zur Verfügung, um deine benutzerdefinierten Klassenvariablen zu initialisieren. Du kannst die Sammlungen Globals und User verwenden. Die Sammlungen Parameters, Fields und ReportItems sind Ihnen zum Zeitpunkt des Berichtslebenszyklus, an dem die OnInit-Methode aufgerufen wird, nicht verfügbar. Um die gemeinsamen Sammlungen, Globals oder User zu verwenden, müssen Sie die Report-Objektreferenz einfügen. Zum Beispiel könnte Ihr Code-Element , um Ihre benutzerdefinierte Klasse basierend auf der aktuellen Sprache des Benutzers zu initialisieren, der den Bericht abruft, folgendermaßen aussehen:
Dim m_myClass As MyClass
Protected Overrides Sub OnInit()
m_myClass = new MyClass(Report.User!Language, _
Report.Globals!ExecutionTime)
End Sub
Eine Möglichkeit, die Eigenschafts- und Feldwerte einer Klasse wie zuvor gezeigt zu initialisieren, besteht darin, deine Klasse zu deklarieren und eine neue Instanz davon zu erstellen, indem du einen überschriebenen Konstruktor aufrufst.
Eine weitere Möglichkeit, die Eigenschaften und Feldwerte der Klassen in Ihren benutzerdefinierten Assemblies zu initialisieren, besteht darin, eine öffentlich verfügbare Methode aufzurufen, die Sie aus der OnInit-Methode definieren. Du musst zuerst einen Instanznamen für deine Klasse in der Berichtsdefinitionsdatei hinzufügen. Sobald du die passende Assemblerreferenz und den Instanznamen hinzugefügt hast, kannst du deine Initialisierungsmethode aufrufen, um Eigenschafts- und Feldwerte für deine Klasse zu initialisieren. Ihre OnInit-Methode könnte wie folgt aussehen:
Protected Overrides Sub OnInit()
m_myClass.MyInitializationMethod(Report.User!Language, _
Report.Globals!ExecutionTime)
End Sub
Für weitere Informationen zum Hinzufügen einer Assemblerreferenz und eines Instanznamens für Ihre benutzerdefinierte Klasse siehe Add an Assembly Reference to a Report (SSRS).
Weitere Informationen zu den globalen Objektsammlungen finden Sie unter Built-in Collections in Expressions (Report Builder und SSRS).