Mit Hilfe der Maskensteuerung ist es beispielsweise möglich abhängig von Feldwerten Elemente in der Maske zu aktivieren bzw. zu deaktivieren oder ganz auszublenden. Dazu werden sogenannte Form-Events implementiert.
Hierbei wird die Klasse BAFormEventsBase
erweitert und das Attribut BAFormEventsImplementation
gesetzt. Das Attribut erhält eine eindeutige Guid und einen Namen.
[BAFormEventsImplementation("[INSERT UNIQUE GUID]", "[INSTERT TRANSLATION GUID]")]
public class MyFormEvents : BAFormEventsBase
{ ... }
Folgende Events existieren
BeforeOpening
Wird vor allen Berechnungen oder Laden der Daten ausgeführt.OnOpening
Wird vor dem Öffnen ausgeführt.OnRefresh
Wird beim Aktualisieren ausgeführt. Wird in der Basisklasse beiOnOpening
ausgeführt.OnSaved
Wird beim Speichern ausgeführt. Wird in der Basisklasse beiOnOpening
ausgeführt.
Maskensteuerelemente beeinflussen
Mit den Hilfsmethoden AddAttributeToControl(s)
kann man Attribute bestimmten Steuerelementen hinzufügen. Man kann das Steuerelement selbst ermitteln oder über
- den Feldnamen,
- den Typen des Steuerelementes,
- den Relationstypen / Relationskategorie
bestimmen.
Beispiel: Ausblenden des Steuerelementes für den Feldnamen LastName
eines Kontaktes.
public override void OnOpening(FormEventsParameters parameters)
{
base.OnOpening(parameters);
AddAttributeToControl(parameters, nameof(OrmContact.LastName), AttributeEnum.Skip);
}
Möglichkeiten von AttributeEnum
ReadOnly
LesemodusSkip
Ausblenden (Feld wird nicht gerendert)Visible
Ausblenden (Feld wird unsichtbar gerendert)ReadOnlyIfNotEmpty
Lesemodus, wenn das Feld nicht leer ist.SkipIfNotEmpty
Ausblenden, wenn das Feld nicht leer ist (Feld wird nicht gerendert)SkipRequiredValidation
Überspringt die Pflichtfeldvalidierung.
Ribbon bar-Steuerelemente beeinflussen
Auch die Aktionen in der Ribbon bar können beeinflusst werden. Um die richtigen Aktionen zu erhalten existiert die Hilfsmethode GetActionsOfType
, um Aktionen eines bestimmten Typen zu ermitteln.
protected static IEnumerable<T> GetActionsOfType<T>(FormEventsParameters parameters) where T : ActionBase
Mit der Klasse RibbonActionsModificationModel
kann man nun die DynamicClientVisibility
beeinflussen.
public override void OnOpening(FormEventsParameters parameters)
{
base.OnOpening(parameters);
IEnumerable<ClientActionCreatePDFAndEMail> actions = GetActionsOfType<ClientActionCreatePDFAndEMail>(parameters);
foreach (ClientActionCreatePDFAndEMail action in actions)
{
RibbonActionsModificationModel modifier = new RibbonActionsModificationModel();
modifier.DynamicClientVisibility.Add(EnumActionVisibility.IfValueIsTrue);
modifier.AdditionalClientData.Add("TestValueIsTrue", ((OrmMyDataTable)parameters.Orm).BooleanField);
parameters.FormModel.RibbonModifications.Add(action.Id, modifier);
}
}