Zur Aktualisierung einer vollständigen Maske ohne konfigurierter Aktualisierungsgruppe, die einen Datensatz anzeigt, mit gleichzeitigem Aufruf einer serverseitigen Funktionalität stehen zwei clientseitige Funktionalitäten zur Verfügung. Welche hiervon gewählt werden muss, ist davon abhängig, zu welchem Zeitpunkt die serverseitige Funktionalität aufgerufen werden soll.
Speichern des Datensatzes mit anschließendem Aufruf einer serverseitigen Funktionalität
Bei der Verwendung dieses Mechanismus wird der angezeigte Datensatz zunächst regulär gespeichert, als hätte der Benutzer die Speichern-Aktion betätigt, das heißt, dieses Vorgehen steht nur im Bearbeiten-Modus der Maske zur Verfügung. Fehlgeschlagene Validierungen unterbrechen den Vorgang.
Um diesen Mechanismus zu verwenden, steht clientseitig (TypeScript) eine Funktion zur Verfügung:
BA.Ui.Form.FormTools.CallServersideActionPostSave(handlerClass: string, parameters: CustomData = null, callback: string = null, callbackParameters: CustomData = null): void
Folgende Parameter sind vorgesehen:
handlerClass
(string): Name der Klasse (vollqualifiziert oder auch nicht, wenn eindeutig), welche die serverseitige Funktionalität beinhaltetparameters
(CustomData, optional): Ein CustomData-Objekt mit Parametern, die an die serverseitige Funktionalität übergeben werden sollencallback
(string, optional): Vollqualifizierter Name einer Javascript-Funktion, die im Anschluss an die serverseitige Ausführung clientseitig aufgerufen werden soll.callbackParameters
(CustomData, optional): Ein CustomData-Objekt, welches an die Callback-Funktion übergeben wird. Dieses kann auch serverseitig durch die aufgerufene Funktionalität manipuliert werden.
Aktualisierung des Datensatzes mit Aufruf einer serverseitigen Funktionalität und optionaler anschließender Speicherung
Für die Aktualisierung des Datensatzes mit Aufruf einer serverseitigen Funktionalität und optionaler anschließender Speicherung des Datensatzes steht clientseitig eine API-Funktion zur Verfügung:
BA.Ui.Form.FormTools.CallServersideActionOnRefresh(handlerClass: string, parameters: CustomData = null, saveWhenDone: boolean = false, skipValidationBeforeRefresh: boolean = false, callback: string = null, callbackParameters: CustomData = null): void
Folgende Parameter sind vorgesehen:
handlerClass
(string): Name der Klasse (vollqualifiziert oder auch nicht, wenn eindeutig), welche die serverseitige Funktionalität beinhaltetparameters
(CustomData, optional): Ein CustomData-Objekt mit Parametern, die an die serverseitige Funktionalität übergeben werden sollensaveWhenDone
(boolean, optional): Wird hier true übergeben, wird der Datensatz nach Ausführung der serverseitigen Funktionalität gespeichert. In diesem Fall erfolgt bereits VOR der Ausführung eine Validierung des Datensatzes; es ist also nicht möglich, einen Datensatz durch einen entsprechenden Aufruf erst valide zu machen.skipValidationBeforeRefresh
(boolean, optional): Wird hier true übergeben, wird die Validierung des Datensatzes vor der Ausführung der serverseitigen Funktionalität übersprungen, die normalerweise stattfindet, wenn der Datensatz gespeichert werden soll, d.h. die Validierung findet erst direkt vor dem Speichern statt. Der Parameter wird ignoriert, wenn saveWhenDone nicht true ist.callback
(string, optional): Vollqualifizierter Name einer Javascript-Funktion, die im Anschluss an die serverseitige Ausführung clientseitig aufgerufen werden soll.callbackParameters
(CustomData, optional): Ein CustomData-Objekt, welches an die Callback-Funktion übergeben wird. Dieses kann auch serverseitig durch die aufgerufene Funktionalität manipuliert werden.
Serverseitige Handler-Klassen
Handler für beide beschriebenen Funktionalitäten müssen das Interface IFormRefreshActionHandler
implementieren und damit die Methode
public void Execute(FormEventsParameters formEventsParameters, Dictionary<string, object> handlerParameters, ref Dictionary<string, object> callbackParameters)
Parameter:
formEventsParameters
(FormEventsParameters): enthält alle Kontextdaten, die ggf benötigt werden, vonOrm
bzw.BindObject
bis hin zuFormConfiguration
undFormModel
(und damit auchFormHiddenData
)handlerParameters
(Dictionary, optional): enthält, sofern beim Aufruf angegeben, die Parameter, die der Handler-Funktion übergeben werden sollen. Kann null sein.callbackParameters
(Dictionary, optional): enthält, sofern zutreffend, die Parameter, die der Callback-Funktion übergeben werden sollen. Diese können in der Handler-Funktion nach Bedarf geändert oder gar erstellt werden (ref-Parameter). Der Parameter kann mit null aufgerufen werden, wenn keine Callback-Funktion angegeben war oder keine Parameter übergeben wurden.
Callback-Funktion (TypeScript)
Die durch ihren vollqualifizierten Namen bei den obigen Funktionen angegebene Callback-Funktion bekommt als einzigen Parameter ein Objekt vom Typ CustomData
.
Diese übergebenen Parameter bestehen aus beim Aufruf in TypeScript übergebenen Parametern und solchen, die durch die serverseitige Funktionalität geändert oder hinzugefügt wurden.
Der Parameter kann auch null sein, wenn keine Parameter übergeben oder serverseitig erzeugt wurden.