Wie in den Kapiteln über Ribbon bar Aktionen und Maskensteuerelmente ebenfalls beschrieben, wird zunächst das Steuerelement für die Toolbox im Designer benötigt. Mit dem Attribut Toolbox
wird es dem Ansichtenbereich hinzugefügt.
Um das korrekte Drag & Drop Verhalten zu ermöglichen, wird das Interface IGridDataColumnControl
implementiert. Damit gilt die neue Spalte als eine normale Datenspalte. Als Basisklasse muss mindestens GridColumnBase
genutzt werden. Möchte man eine Datenspalte von der aktuellen Datentabelle anzeigen kann man von GridDataColumnBase
ableiten und hat damit eine Feldauswahl (inkl. Teil-Datentabellen-Felder). Folgende virtuelle Methoden sind dabei zu beachten:
GetTypesOfOrmFieldName
Beeinflusst die Auswahl der Felder. Dafür werden die unterstützen Typen von Datentabellenfeldern zurückgegeben. BeispielsweiseOrmTextField
für Textfelder. Die Basis Klasse aller Felder istOrmFieldBase
.GetDataType
Ermittelt in der Basisimplementierung den Datentypen der Spalte auf Basis des gewählten Feldes. Beispielweise fürOrmTextField
string
. Möchte man davon abweichen, ist die Methode zu überladen.
Die Werte von EnumColumnType
, um den ColumnType
zu setzen, entsprechen den Werten von MVCxGridViewColumnType
von Dev Express.
In diesem Beispiel werden zwei Eigenschaften implementiert, welche genutzt werden, damit der Konfigurator das Verhalten dieser neuen Spalte beeinflussen kann.
[Serializable]
[Toolbox(EnumConfigurationType.GridConfigurationGuid)]
public class MyTextColumn : GridDataColumnBase, IGridDataColumnControl
{
public MyTextColumn()
{
ColumnType = Api.Enum.EnumValueConverter.GetEnumColumnTypeValue(EnumDataTypes.String);
ToolboxName = "My Text Column";
Caption = "My Text Column";
ControlInitName = "MyTextColumn";
ToolboxGroupName = Constants.Designer.ToolboxGroups.Grid.Basic;
Icon = Constants.Icons.Designer.Grid.TextBox;
Id = [INSERT UNIQUE GUID]".ToGuid();
}
[DisplayName("Default value")]
[HelpText("If value is empty this value is used")]
[PropertiesGroup("My properties group", 10), PropertiesForm(10)]
public string DefaultValue { get; set; }
[DisplayName("Encode HTML")]
[HelpText("Encode the HTML content")]
[PropertiesGroup("My properties group", 10), PropertiesForm(20)]
public bool EncodeHTML { get; set; } = true;
}