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 MethodenGetListOfFieldsUsed
undGetListOfRelationDefinitionsUsed
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 BasisklasseTreelistDBConfigurationBase
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, wennIDesignerConfiguration
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)]