Konfigurationen sind Einstellungen, die in der Regel im Designer erstellt und bearbeitet werden. Gespeichert werden sie in der Tabelle OrmConfiguration in der Spalte Configuration als serialisiertes XML. Durch diese Serialisierung können beliebig Eigenschaften hinzugefügt und entfernt werden, ohne dass eine Migration notwendig ist. In manchen Fällen ist trotzdem eine Migration sinnvoll, dafür bietet der Mechanismus extra Möglichkeiten.

Es können eigene Konfigurationen mit eigenen Steuerelementen in der Toolbox erstellt werden. Dazu wird im ersten Schritt ein eigener Eintrag in der Auswahlliste EnumConfigurationType benötigt. Dort hat man als zusätzliche Parameter, die Möglichkeit einen Controller für die Bearbeitung zu definieren. In der Regel wird der Designer dafür verwendet und man kann dort null angeben. Auch für die Anzeige der Konfiguration kann ein eigener Controller angegeben werden. Beispielsweise wird der entsprechende Controller für Ansichten (“Grid”) oder für Masken (“Form”) angegeben. Eine solche Möglichkeit spielt aber für Projekte eine untergeordnete Möglichkeit.

Anschließend wird eine Klasse implementiert, die die Basiseinstellungen beinhaltet.

[Serializable]
[ConfigurationIdentifier(EnumConfigurationTypeExtension.MyConfigurationGuid, 1000)]
public class MyConfiguration : TreelistDesignerConfigurationBase { ... }

Die Basisklasse TreelistDesignerConfigurationBase wird mindestens benötigt. Es können durch eine andere Basisklasse oder durch die Implementierung von Schnittstellen weitere Verhalten bestimmt werden.

  • TreelistDBConfigurationBase Wird diese Klasse als Basisklasse verwendet, erhält man automatisch eine Auswahl einer Datentabelle und durch das implementieren der Methoden GetListOfFieldsUsed und GetListOfRelationDefinitionsUsed kann dafür gesorgt werden, das Felder und Relationsdefinitionen der Datentabelle nur einmal gewählt werden können. Dies ist Beispielsweise in den Masken der Fall, in denen man jedes Feld nur einmal in der Maske konfigurieren kann.
  • IEntityConfigurationSpecifier Alternativ zu der Basisklasse TreelistDBConfigurationBase kann dieses Interface implementiert werden. In dem Fall muss man die Auswahl der Datentabelle selbst implementieren.
  • IDesignerConfiguration Dieses Interface wird implementiert, wenn der Designer und damit eigene Steuerelemente genutzt werden.
  • IControlHolder Sollte genutzt werden, wenn die eigene Konfiguration weitere Steuerelemente beinhaltet. Daher sollte dieses Interface auch implementiert werden, wenn IDesignerConfiguration implementiert wird.

Eigene Eigenschaften

Die eigenen Eigenschaften werden automatisiert als Eingabeelemente dargestellt. Dies ist im Abschnitt Generierte Masken beschrieben.

Anzeige auf der Initialisierungsmaske

Mit diesem Attribut wird gesteuert welche Eigenschaften auf der Initialisierungsmaske angezeigt wird.

[PropertyEditable(EditPropertyOn.InitForm)]

Spezieller Validator

  • [BARequiredConfigurationProperties(requiredOn)] Bedingte Pflichtfeldvalidierung abhängig davon ob die Eigenschaft gerade auf der Initialisierungsmaske dargestellt wird.

Eigene Steuerelemente

Eine Konfiguration kann im Designer aus Steuerelementen zusammengesetzt werden, wie dies beispielsweise in Masken und Ansichten geschieht. Das Prinzip ist identisch. Um ein eigenes Steuerelement zu implementieren wird dem Toolbox Attribut die Guid der eigenen Konfiguration übergeben.

[Toolbox(EnumConfigurationTypeExtension.MyConfigurationGuid)]