Xamarin的Telerik UI?下载30天免费试用

分组

RadDataGrid支持通过UI -进行分组操作分组的用户界面以编程方式

程序化的分组

的描述符中添加描述符可以实现编程式分组GroupDescriptors收集。有两种类型的描述符:

所有groupdescriptor都位于Telerik.XamarinForms.Common.Data命名空间中:

xmlns: telerikCommon = " clr-namespace: Telerik.XamarinForms.Common.Data;装配= Telerik.XamarinForms.Common”
使用Telerik.XamarinForms.Common.Data;

属性组描述符

PropertyGroupDescriptor用于按定义对象的类的属性对DataGrid中的数据进行分组。

要使用PropertyGroupDescriptor,必须设置其属性PropertyName。

  • PropertyName(string):获取或设置用于检索要分组的键的属性的名称。

方法可以轻松地按升序或降序对组进行排序排序方式财产。

例如,让我们有以下业务对象:

public class Person {public string Name {get;设置;} public int Age {get;设置;} public string部门{get;设置;}}

和ViewModel类的集合对象:

公共类ViewModel{公共ViewModel() {this。人= new ObservableCollection <人>(){新人{Name =“纪子= 23岁部门=“生产”},新人{Name =“杰瑞”= 23岁部门=“会计与金融”},新人{Name =“伊桑= 51岁部门=“营销”},新人{Name =“伊莎贝拉”= 25岁部门=“营销”},新人{Name =“约书亚”= 45岁部门=“生产”},新人{Name =“Logan”= 26岁部门=“生产”},新人{Name =“伦”,年龄= 32,部门=“生产”},新人{名字=“埃琳娜”,年龄= 37,部门=“会计与财务”},新人{名字=“罗斯”,年龄= 30,部门=“营销”},};} public observablecollollection  People {get;设置;}}

下一个片段演示了如何通过PropertyGroupDescriptor按“Department”属性对人员进行分组:

    

剩下的就是将ViewModel设置为页面的BindingContext:

这一点。BindingContext = new ViewModel();

下面是RadDataGrid在分组时的样子:

GroupHeaderTemplate

此外,您可以创建自定义GroupHeaderTemplate,以便在对DataGrid进行分组时获得所需的外观。GroupHeader的BindingContext是GroupHeaderContext对象,它包含以下属性:

  • 描述符:指定用于分组的描述符;
  • Group:获取组的详细信息,例如:
    • 项目:获取组的子项目。
    • Key:获取组键的具体信息。
  • IsExpanded:定义一个值,该值指示当前组是否展开(使其子项可见)。
  • 级别:获取组的从零开始的级别(或深度)。

下面的代码片段显示了GroupHeaderTemplate是如何定义的:

          

查看下图中的结果:

委托组描述符

两者之间的区别DelegateGroupDescriptorPropertyGroupDescriptor是DelegateGroupDescriptor通过一个自定义的Key分组数据,而PropertyGroupDescriptor通过一个自定义的Key分组,这是我们模型的一个属性。

你必须设置DelegateGroupDescriptor的以下属性:

  • KeyLookup:获取或设置IKeyLookup实例,该实例用于检索每个数据项的组键。

方法可以轻松地按升序或降序对组进行排序排序方式财产。

您必须创建一个实现IKeyLookup接口,它将返回您想要分组的键。然后您需要添加DelegateGroupDescriptor到RadDataGrid。GroupDescriptorscollection and set itsKeyLookUp财产。

检查下面的示例IKeyLookup实现:

类CustomIKeyLookup: Telerik.XamarinForms.Common.Data.IKeyLookup{公共对象GetKey(对象实例){var item =实例作为Person;返回项目? . name [0];}}

将其添加到GroupDescriptors收集RadDataGrid:

this.dataGrid.GroupDescriptors。Add(new DelegateGroupDescriptor() {KeyLookup = new CustomIKeyLookup()});

下面是RadDataGrid通过DelegateGroupDescriptor分组时的样子:

分组的用户界面

分组UI是设计启用的,它允许用户按列值对数据进行分组。分组UI公开了以下属性:

  • UserGroupMode:定义是否启用/禁用分组UI。可用的选项有汽车/启用/禁用。UserGroupMode默认值为汽车

以下属性用于启用/禁用特定列的分组:

  • CanUserGroup(bool):定义一个值,该值指示用户是否可以通过分组UI筛选列。

的DataGrid/分组文件夹中可以找到分组示例SDK示例浏览器应用程序

展开和折叠组

RadDataGrid支持组扩展和折叠操作,无论是通过UI点击组头或编程。默认情况下,所有组都展开。

本帮助主题将概述用于控制DataGrid组的展开/折叠状态的方法和命令。

获取分组的DataGrid项

要操作可折叠的DataGrid组,首先需要调用itsGetDataView方法。简而言之,GetDataView方法提供了应用所有Sort、Group和Filter操作后ItemsSource的视图。返回类型为IDataViewCollection它公开了下面几节中描述的展开和折叠方法。

var dataView = this.dataGrid.GetDataView();

展开和折叠所有组

要展开所有组,请使用ExpandAll方法和分别使用CollapseAll方法-折叠所有组。

//扩展所有var dataView = this.dataGrid.GetDataView();dataView.ExpandAll ();//崩溃所有var dataView = this.dataGrid.GetDataView();dataView.CollapseAll ();

展开和折叠某个组

方法检索第一级组GetGroups的方法IDataViewCollection对象和用法ExpandGroup/CollapseGroup使某一群体分别扩大或缩小。您可以通过查看分组是否扩容GetIsExpanded方法。

下面是如何使用这些方法的简短片段:

var dataView = this.dataGrid.GetDataView();var rootGroups = dataView.GetGroups();var isFirstExpanded = dataview . getisexpamed (rootGroups.First());//扩展某个组dataView.ExpandGroup(rootGroups.First());//分解某个组dataView.CollapseGroup(rootGroups.First());

此外,IDataViewCollection提供了ExpandItem/CollapseItem方法,将数据项作为参数并展开/折叠包含此项的即时组。

var lastItem = (dataGrid. var lasttitem = (dataGrid. var)ItemsSource为IEnumerable).Last();var dataView = this.dataGrid.GetDataView();dataView.CollapseItem (lastItem);

另请参阅

在本文中
Baidu
map