数据表组布局
RadDataForm通过以下属性支持不同的组布局:
- GroupLayoutDefinition:定义一个布局定义,用于排列所有数据表单组中的编辑器。
- GroupLayoutDefinitionSelector获取或设置为每个组应用特定布局的布局定义选择器。
如果没有定义组,则将所有编辑器安排在默认组中。
的源类元数据中定义了编辑器排列的信息DisplayOptionsAttribute。都在这里DisplayOptionsAttribute由布局解释的属性:
- 位置:默认值:0
- ColumnPosition:默认值:0
- ColumnSpan:默认值:1
堆栈布局定义
的DataFormGroupStackLayoutDefinition在按DisplayOptions排序的堆栈中排列编辑器位置价值。
下面是一个示例源对象类:
公共类SourceItem {[DisplayOptions(Group = "Value", Header = "1:", Position = 2)]公共int Value {get;设置;} = 2;[DisplayOptions(Group = "Value", Header = "2:", Position = 1)] public int Value1 {get;设置;} = 1;[DisplayOptions(Group = "Value", Header = "3:", Position = 0)] public int Value2 {get;设置;} = 0;[DisplayOptions(Group = "Name", Header = "Name 1: ", Position = 0)] public string Name {get; set; } = "position 0"; [DisplayOptions(Group = "Name", Header = "Name 2:", Position = 1)] public string Name1 { get; set; } = "position 1"; }
下面的示例演示了如何为所有组设置堆栈布局:
< telerikInput: RadDataForm。GroupLayoutDefinition>
var dataForm = new RadDataForm {GroupLayoutDefinition = new DataFormGroupStackLayoutDefinition(), Source = new SourceItem()};
结果如下:
网格布局定义
的DataFormGroupGridLayoutDefinition在网格中排列编辑器。每个编辑器都放置在DisplayOptions定义的位置上位置(行)和ColumnPosition(列)值。编辑器占用的列数由DisplayOptions定义ColumnSpan财产。
下面是一个示例源对象类:
公共类SourceItem {[DisplayOptions(Group = "Value", Header = "1:", Position = 0, ColumnPosition = 0)]公共int Value {get;设置;} = 0;[DisplayOptions(Group = "Value", Header = "2:", Position = 0, ColumnPosition = 1)] public int Value1 {get;设置;} = 1;[DisplayOptions(Group = "Value", Header = "3:", Position = 1, ColumnPosition = 0)] public int Value2 {get;设置;} = 2;[DisplayOptions(Group = "Value", Header = "4: ", Position = 1, ColumnPosition = 1)] public int Value3 {get; set; } = 3; [DisplayOptions(Group = "Name", Header = "Name 1: ", Position = 1, ColumnPosition = 0)] public string Name { get; set; } = "1, 0"; [DisplayOptions(Group = "Name", Header = "Name 2:", Position = 1, ColumnPosition = 1)] public string Name1 { get; set; } = "1, 1"; [DisplayOptions(Group = "Name", Header = "Name 3:", Position = 0, ColumnPosition = 0)] public string Name2 { get; set; } = "0, 0"; [DisplayOptions(Group = "Name", Header = "Name 4:", Position = 0, ColumnPosition = 1)] public string Name3 { get; set; } = "0, 1"; }
下面的示例演示了如何为所有组设置网格布局:
< telerikInput: RadDataForm。GroupLayoutDefinition>
var dataForm = new RadDataForm {GroupLayoutDefinition = new DataFormGroupGridLayoutDefinition(), Source = new SourceItem()};
结果如下:
布局定义选择器
有时每个组需要不同的布局。在这些情况下,您可以使用布局定义选择器。的类IDataFormGroupLayoutDefinitionSelector接口,并为每个组提供布局定义。
下面是一个示例布局定义选择器类:
public class CustomGroupLayoutDefinitionSelector: IDataFormGroupLayoutDefinitionSelector {public DataFormGroupLayoutDefinition SelectLayoutDefinition(string groupName) {if (groupName == "Name") {return new DataFormGroupGridLayoutDefinition();} if (groupName == "Value"){返回新的DataFormGroupStackLayoutDefinition {Orientation = Orientation。垂直};}返回null;}}
下面是一个示例源对象类:
公共类SourceItem {[DisplayOptions(Group = "Value", Header = "1:", Position = 2)]公共int Value {get;设置;} = 2;[DisplayOptions(Group = "Value", Header = "2:", Position = 1)] public int Value1 {get;设置;} = 1;[DisplayOptions(Group = "Value", Header = "3:", Position = 0)] public int Value2 {get;设置;} = 0;[DisplayOptions(Group = "Name", Header = "Name 1: ", Position = 0)] public string Name {get; set; } = "position 0"; [DisplayOptions(Group = "Name", Header = "Name 2:", Position = 1)] public string Name1 { get; set; } = "position 1"; }
下面的示例演示了如何在数据表单中使用布局选择器:
< telerikInput: RadDataForm。GroupLayoutDefinition>
var dataForm = new RadDataForm {GroupLayoutDefinition = new DataFormGroupStackLayoutDefinition(), Source = new SourceItem()};
结果如下: