TreeList绑定列
本文解释了在树列表中显示数据的基础知识以及其绑定列的特性。
本文中的部分:
在树列表中显示数据
要在树列表中显示数据,必须定义TreeListColumn
中的实例TreeListColumns
集合用于要显示的数据源的字段。他们的场
参数定义在列中显示模型中的哪个属性。的树列表中提供模型集合数据
参数。
因为树列表是为层次数据设计的,所以还应该定义哪个列将包含子项的展开/折叠箭头。它可以是任何列,不一定是第一列,你可以通过设置它的可扩展的
参数真正的
.
类中如何将树列表绑定到数据字段和子元素的详细信息数据绑定概述篇文章。它提供了关于模型特征的信息,并以两种不同的方式描述了父子关系。
向树列表提供数据并选择要查看的列(字段)
@*为treelist定义数据、模型和列*@ @ Using System.ComponentModel.DataAnnotations @*此Using仅用于模型类属性*@ @code {public List Data {get;设置;} protected override async任务OnInitializedAsync(){数据=等待GetTreeListData();} //样本模型和数据生成的公共类Employee{公共int Id {get;设置;}公共int?ParentId {get;设置;} [Display(Name = "员工名")]public string Name {get; set; } public DateTime HireDate { get; set; } public string Team { get; set; } // in this example we don't use this field (in the treelist) } async Task> GetTreeListData() { List data = new List(); for (int i = 1; i < 15; i++) { data.Add(new Employee { Id = i, ParentId = null, Name = $"root: {i}", HireDate = DateTime.Now.AddYears(-i) }); ; for (int j = 1; j < 4; j++) { int currId = i * 100 + j; data.Add(new Employee { Id = currId, ParentId = i, Name = $"first level child {j} of {i}", HireDate = DateTime.Now.AddDays(-currId) }); for (int k = 1; k < 3; k++) { int nestedId = currId * 1000 + k; data.Add(new Employee { Id = nestedId, ParentId = currId, Name = $"second level child {k} of {i} and {currId}", HireDate = DateTime.Now.AddMinutes(-nestedId) }); ; } } } return await Task.FromResult(data); } }
字段名也可以使用字符串
nameof
运算符不是必需的。例如,ID列可以这样定义:.但是,字段名是,区分大小写的.
的
数据
集合可以是ObservableCollection
,数组,a列表
-它必须只执行IEnumerable
.
TreeList可以从模型中为您生成列.
TreeList绑定列参数
您可以在绑定列上使用以下属性:
数据绑定
可扩展的
-(默认为假
-当设置为true时,该列在值前显示一个展开/折叠箭头,并表示它的层次结构。您应该将此设置为树列表中的至少一列,以显示数据的层次结构性质。场
-(默认为零
) -数据源中字段的名称,该列将作为字符串呈现(区分大小写)。您可以将其设置为普通字符串(场= " SomeField "
)或者让.NET从平面模型的模型中提取字段名(字段= @nameof (MyModelClass.SomeFIeld)
).
外观
标题
-在列标题中呈现的文本。关于它的行为,请参阅下面的注释。DisplayFormat
-当网格处于显示模式时,用于在单元格中呈现字段值的c#格式字符串。欲知详情,请浏览列显示格式篇文章。TextAlign
控件的水平对齐数据细胞。例如,您可以使用此属性右对齐数值列。财产接受ColumnTextAlign
枚举值(左
,正确的
或中心
).如果没有设置,文本对齐将取决于页面上现有的样式、默认浏览器行为和文本方向。标题单元格对齐需要使用不同的方法HeaderClass
而且自定义CSS——看中心网格列标题文本.宽度
-(默认为零
) -列的宽度。看到维文章获取有关受支持格式的信息。看到TreeList列宽度行为有关不同列宽配置的TreeList行为的详细信息。HeaderClass
-字符串
-在列的标题单元格中添加自定义CSS类。使用它来应用自定义样式或重写默认的TreeList样式.MinResizableWidth
-(默认为30.
并忽略较小的值)—期间允许的最小列宽度用户调整.不像弦宽度
属性,此值为十进制,并期望像素值。MaxResizableWidth
-(默认为0
) -期间允许的最大列宽用户调整.不像弦宽度
属性,此值为十进制,并期望像素值。锁着的
-(默认为假
) -定义该列是否为锁定(冻结,固定).Reorderable
-(默认为真正的
) -用户是否可以拖动以重新排序这一列。可调整大小的
-(默认为真正的
) -用户是否可以调整这一列。可见
-(默认为零
)—如果该参数设置为假
它隐藏了TreeList中的列。接受两个保龄球
而且bool吗?
类型和零
被当作真正的
.列
-可以声明的嵌套标记多个列标头.
数据操作
可编辑的
-(默认为真正的
) -您可以将此属性设置为真正的
或假
允许或阻止编辑这个领域的。默认为真正的
.要编辑数据,还需要一个CommandColumn.滤过性的
-(默认为真正的
) -你可以设置为假
所以一个滤过性的Treelist将不允许用户筛选特定的列。FilterEditorType
-(默认为TreeListFilterEditorType。DatePicker
的默认过滤组件DateTime
列将是DatePicker或DateTimePicker。FilterEditorFormat
-设置格式
的过滤组件字符串
.适用于日期时间和数字列。不要使用占位符(例如set“D”
,而不是“{0:D}”
).可分类的
-(默认为真正的
) -设置为假
所以用户不能排序这一列。
模板
模板
-此属性也可以用作内部标记,它定义了自定义单元格内容而不是树列表放入其中的默认字段值。HeaderTemplate
属性的自定义内容也可以用作内部标记标题单元格你可以渲染而不是标题。EditorTemplate
-此属性也可以用作内部标记,并定义了一个用于编辑字段的自定义输入和逻辑.
您可以在树列表文档的其余部分和我们的现场演示.
笔记
对于过滤和排序等高级操作,您可以使用必须设置一个
场
列,它所指向的字段必须是字符串或值类型(例如数字、字符串、DateTime、布尔值)。- 如果一个
场
未设置时,该列将不允许对该列进行筛选、排序和编辑。 - 如果
场
指向自定义对象或IDictionary
,这些操作将引发错误,因为在. net中对非基本类型没有已知的数据操作。 - 要绑定到嵌套(复杂)模型(也称为导航属性),只需使用包含子类的字段及其自己的字段的名称。有关示例,请参见绑定到复杂对象中的导航属性篇文章。
- 如果一个
树列表将跳过标记为
IgnoreDataMemberAttribute
执行CUD操作时。它的存在表明该属性不需要成为序列化数据的一部分,并且可以跳过这些字段EF中的惰性加载代理去工作。如果你不设置
标题
对于列,树列表将采用[Display(Name = "我的专栏标题")]
来自模型字段的数据注释属性。如果也不可用,则将显示字段的名称。如果模型有
[DisplayFormat(DataFormatString = "{0:C}")]
数据注释属性时,显示格式将取自属性中的格式字符串。如果要防止特定属性的数据突变,可以设置
可编辑的
属性的参数(可编辑)
数据注释属性假
对于所需的模型字段。- 属性的模型属性生成的列
setter
或者它是不可访问的(私有)也将不可编辑。
- 属性的模型属性生成的列
树列表使用
Activator.CreateInstance < TItem > ();
在调用Insert操作时生成一个新项,因此Model应该定义一个Parameterless构造函数。
您可以通过仅在用户展开子节点时加载子节点来提高性能。欲知详情,请浏览按需负载篇文章。