Ereignishandler
Client-Scripting-Logik wird als Ereignishandler für Formularereignisse ausgeführt. Sie müssen Ihre Ereignishandler registrieren, damit Ihre Logik ausgeführt wird. Die Registrierung für allgemeine Ereignisse kann über das Formulareigenschaften-Dialogfeld oder über den Code erfolgen. Einige Ereignisse können nur über Code registriert werden. Ereignishandler können auf mehreren Formularen ausgeführt werden, müssen jedoch für jedes Formular einzeln registriert werden.
Über Formulareigenschaften registrieren
Durch das Registrieren von Ereignishandlern mit Formulareigenschaften wird zur Entwurfszeit eine statische Konfiguration von Ereignishandlern erstellt. Bei jedem Laden des Formulars werden die gleichen Ereignishandler ausgeführt. Anders als bei der Registrierung des Ereignishandlers mit Code kann die Logik festlegen, was registriert werden soll.
Im Formulardesigner können Sie Ereignishandler für die folgenden Ereignisse registrieren:
Formular – Dieser Handler ermöglicht es Ihnen, OnLoad‑ und OnSave-Ereignishandler zu registrieren.
Registerkarten – Dieser Handler ermöglicht es Ihnen, Ereignisse für jede Registerkarte im Formular für die Änderung des Registerkartenstatus zu registrieren. In der Regel wird dies verwendet, um zu erfahren, ob eine Registerkarte erweitert ist, damit Sie zum Beispiel Daten dynamisch laden können.
Spalten – Mit diesem Handler können Sie einen Ereignishandler registrieren, wenn Spaltendaten geändert werden.
Im Folgenden sehen Sie ein Beispiel für die Registrierung eines OnLoad-Ereignishandlers für die Kontotabelle.
Ein übliches Muster besteht darin, einen OnLoad-Handler zu registrieren und dann die verbleibenden Ereignishandler per Code in der OnLoad-Ereignishandlerlogik zu registrieren. Der Vorteil dieser Methode besteht darin, dass Sie nicht alle Ereignishandler in jedem Formular registrieren müssen, wenn Ihre Logik in mehreren Formularen verwendet wird. Ein anderer Vorteil besteht darin, dass Sie mithilfe von Logik entscheiden können, ob ein Handler registriert werden soll, wenn Sie einige der Ereignishandler dynamisch bestimmen müssen. Sie können zum Beispiel die Registrierung eines Ereignishandlers für eine Spalte überspringen, wenn Sie beim Laden des Formulars feststellen können, ob diese Spalte schreibgeschützt oder ausgeblendet ist.
Mit Code registrieren
Die Registrierung von Ereignishandlern mit Code ist für alle Handler mit Ausnahme von OnLoad möglich, das mithilfe der Konfiguration registriert werden muss. Der OnLoad-Handler kann danach verwendet werden, um andere Handler im Code zu registrieren. Im Folgenden sehen Sie ein Beispiel für die Registrierung eines OnChange-Handlers in der Kontonummernspalte in der Kontotabelle durch Ausführen der folgenden Schritte:
Erstellen Sie eine Funktion, die in OnLoad des Kontoformulars ausgeführt wird.
Rufen Sie in dieser Funktion addOnChange auf, um die Funktion zu registrieren, die bei Änderung der Kontonummernspalte aufgerufen wird.
Registrieren Sie den OnLoad-Ereignishandler in den Kontoformulareigenschaften.
function LearnLab_handleAccountOnLoad(executionContext)
{
var formContext = executionContext.getFormContext();
formContext.getAttribute('accountnumber').addOnChange(LearnLab_handleOnChangeAccountNumber)
}
function LearnLab_handleOnChangeAccountNumber(executionContext)
{
var formContext = executionContext.getFormContext();
formContext.ui.setFormNotification('Check other systems', 'INFO', 'AcctNumber');
}
Wenn sich die Daten der Kontonummerspalte geändert haben, zeigt dieser Code eine Benachrichtigung auf Formularebene an.
Es gibt viele andere clientseitige Ereignisse, für die Sie Handler registrieren können.