Möchte man für eine Eigenschaft von Datentyp String
eine Auswahl anbieten, geschieht dies über die Angabe eines Steuerelementes und eines Datenproviders. Es ist sowohl möglich ein eigenes Steuerelement als auch einen eigenen Datenprovider zu implementieren oder man verwendet vorhandene Elemente.
Steuerelement
Zurzeit existieren zwei Steuerelemente:
[ComboboxControl]
[TokenboxControl]
Die Combobox wird für die Einzelauswahl und die Tokenbox für die Auswahl mehrerer Werte verwendet. Möchte man ein eigenes Steuerelement implementieren, muss man eine Klasse erstellen die SelectionControlAttributeBase
erweitert und die Methode CreateControls
implementiert.
Datenprovider
Es gibt eine Vielzahl verschiedener Datenprovider für Steuerelemente. Zu erkennen sind diese an dem Präfix „CDP“ und befinden sich unterhalb des Namespaces BA.Core.DataProviders
.
Jeder Datenprovider besteht aus zwei Klassen:
- dem Datenprovider selbst und
- dessen Eigenschaften mit deren Hilfe das Verhalten angepasst werden kann.
Um einen Datenprovider zu verwenden, wird die Klasse mit den Eigenschaften als Attribut angegeben. Beispielsweise:
[CDPEnumValuesProperties(masterGuid: EnumWeekDays.Guid)]
Jeder Datenprovider hat andere Eigenschaften, mit denen er beeinflusst werden kann. Schauen sie sich die jeweiligen Möglichkeiten genau an.
In manchen Situationen sind die Eigenschaften variabel und können daher nicht am Attribut selbst angegeben werden. Dafür existieren Klassen mit deren Hilfe die Eigenschaften modifiziert werden können. Beispielsweise:
[CDPDataSourceModifier(UseConfiguration = true)]
Mit dessen Hilfe wird die Eigenschaft DataSource
oder DataSources
gesetzt werden. Diese beinhaltet üblicherweise die Guid
oder das GuidSet
der Datentabellen. In dem Beispiel wird die Datentabelle aus der Konfiguration übernommen. Weitere Möglichkeiten entnehmen sie der Klassendokumentation.
Eine einfache Möglichkeiten Modifizierungen vorzunehmen ist das Attribut
[CDPModifier(ModifierMethod = nameof(ModifyDataProviders))]
Dort gibt man eine Methode aus der aktuellen Klasse an und modifiziert dort die Eigenschaften des Datenproviders
public void ModifyDataProviders(ConfigurationBase configuration, string propertyName, ControlDataProviderPropertiesBase properties)
{
if (properties is CDPOrmFieldsProperties prop && propertyName == nameof(OrmFieldName))
{ … }
}
Beispiele
Einzelauswahl einer Vorlage beliebigen Typs:
[ComboboxControl]
[CDPOrmDataProperties(dataSources: new string[] { EnumDataSource.TemplateBaseGuid })]
public string DefaultTemplate { get; set; }
Mehrfachauswahl von öffentlichen Ordnern. Die Ordner müssen die Datentabellen beinhalten können, welche in OrmDataSources
angegeben sind.
[TokenboxControl]
[CDPRecordCollectionsProperties(onlyPublic: true)]
[CDPDataSourceModifier(ControlDataSourceProperty = nameof(OrmDataSources))]
public string RecordCollection { get; set; }
Einzelauswahl einer Rolle, ohne Jeder und System User.
[ComboboxControl]
[CDPRolesProviderProperties(filterEveryOne: true, filterSystemUser: true)]
public string EditorRole
Maskenaktualisierung
Mit dem Attribut [AutoSubmit]
wird bei Auswahl eines neuen Wertes, die Maske automatisch aktualisiert, beispielsweise um weitere Eigenschaften ein- oder auszublenden.