Definition

Mit Hilfe des Attributs [EnumDefinition] wird eine Klasse als Auswahliliste gekennzeichnet. Folgende Parameter sind notwendig:

  • String name: Name der Auswahlliste
  • Bool isLocked: Ist die Auswahlliste für die Bearbeitung gesperrt?

Folgende Parameter sind Optional (Mit „false“ vorbelegt):

  • Bool copyRelation: Werden Relationen bei neuen Kindern Kopiert?
  • Bool sortByText: Sollen Auswahllistenwerte nach deren Inhalt sortiert werden?
  • Bool allowAddingValues: Dürfen neue Werte hinzugefügt werden?
  • Bool visibleInManagament: Soll die Auswahlliste in der Verwaltung sichtbar sein?
  • Bool visibleInOrmDesigner: Soll die Auswahlliste im Designer auswählbar sein?

Deklaration

Um eine Auswahlliste zu erzeugen muss die Klasse die abstrakte Klasse ValueEnum<E> erweitern. E ist hierbei die Referenz auf die neu eurzeugte Auswahlliste.
public class EnumYourName : ValueEnum<EnumYourName>

Definition von Werten

Bei der Definition von Werten müssen folgende Eigenschaften festgelegt werden

  • String valueGuid: Eindeutige Guid
  • int sortOrder: Eindeutige Sortierungsnummer
  • String translationGuid: Guid der Übersetzung

Optional sind folgende Werte

  • String image = null: Der Name eines Icons (Siehe)
  • String color = null: Die Farbe des Wertes
  • Boolean isActive = true: Ist das Aktiv-Flag gesetzt
  • Boolean isLocked = false: Ist der Wert vor Änderungen in der Anwendung geschützt
  • Boolean isDeletable = true: Kann der Wert gelöscht werden.

Erweiterte Properties

Den Werten können optional weitere Eigenschaften hinzugefügt werden. Mit Hilfe von Attributen kann die Darstellung in der UI beeinflusst werden. Siehe auch Generierte Masken.
In diesem Beispiel wird die Eigenschaft in der UI nicht dargestellt und ist damit nicht modifizierbar.

[Browsable(false)]
public string Property { get; set; }

Beispiel einfache Auswahlliste

[EnumDefinition("My Enum", false, false, true, true, true, true)]
public class EnumMyEnum : ValueEnum<EnumMyEnum>
{
    public const string Guid = "[INSERT ENUM GUID]";

    public const string FirstValueGuid = "[INSERT VALUE 1 GUID]";
    public const string SecondValueGuid = "[INSERT VALUE 2 GUID]";

    public static readonly EnumMyEnum FirstValue = new EnumMyEnum(FirstValueGuid, 0, "[INSERT TRANSLATION 1 GUID]");
    public static readonly EnumMyEnum SecondValue = new EnumMyEnum(SecondValueGuid, 1, "[INSERT TRANSLATION 2 GUID]");

    public EnumMyEnum(String valueGuid, int sortOrder, String translationGuid) : base(valueGuid, sortOrder, translationGuid)
    { }

    public EnumMyEnum() { }
}

Beispiel 2

Diese Beispielliste implementiert zusätzlich Folgendes

  • Eine eigene Eigenschaft
  • Die Definition eines Icons pro Wert
[EnumDefinition("My Enum", false, false, true, true, true, true)]
public class EnumMyEnum : ValueEnum<EnumMyEnum>
{
    public const string Guid = "[INSERT ENUM GUID]";

    public const string FirstValueGuid = "[INSERT VALUE 1 GUID]";
    public const string SecondValueGuid = "[INSERT VALUE 2 GUID]";

    public static readonly EnumMyEnum FirstValue = new EnumMyEnum(FirstValueGuid, 0, "[INSERT TRANSLATION 1 GUID]", "my value 1", "telephone2");
    public static readonly EnumMyEnum SecondValue = new EnumMyEnum(SecondValueGuid, 1, "[INSERT TRANSLATION 2 GUID]", "my value 2", "information");


    [Browsable(false)]
    public string OwnProperty { get; set; }

    public EnumMyEnum(String valueGuid, int sortOrder, String translationGuid, String ownProperty, String image = null) : base(valueGuid, sortOrder, translationGuid, image)
    {
        OwnProperty = ownProperty;
    }

    public EnumMyEnum() { }
}