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

网格数据绑定列

本文解释了在网格中显示数据的基础知识以及其绑定列的特性。

重要的相关信息是网格数据绑定基础

有关值绑定和数据绑定的详细信息,以及它们之间的区别,请参见值绑定与数据绑定篇文章。

本文中的部分:

在网格中显示数据

要在网格中显示数据,必须定义GridColumn中的实例GridColumns集合用于要显示的数据源的字段。他们的参数定义在列中显示模型中的哪个属性。的网格中提供模型集合数据参数。

向网格提供数据并选择要查看的列(字段)

@ @使用System.ComponentModel.DataAnnotations @*此使用仅用于模型类属性*@         @code {public IEnumerable MyData = Enumerable。范围(30)。选择(x => new SampleData {Id = x, Name = " Name " + x, Team = " Team " + x % 5, HireDate = DateTime.Now.AddDays(-x)。日期});公共类SampleData{公共int Id{获取;设置;} [Display(Name = "员工名")]public string Name {get;设置; } public string Team { get; set; } public DateTime HireDate { get; set; } } }

字段名也可以使用字符串nameof运算符不是必需的。例如,ID列可以这样定义:.但是,字段名是,区分大小写的

数据集合可以是ObservableCollection,数组,a列表-它必须只执行IEnumerable

视频教程-开始与Telerik数据网格Blazor

网格绑定列参数

您可以在绑定列上使用以下属性:

数据绑定

  • -(默认为) -数据源中字段的名称,该列将作为字符串呈现(区分大小写)。您可以将其设置为普通字符串(场= " SomeField ")或者让.NET从平面模型的模型中提取字段名(字段= @nameof (MyModelClass.SomeFIeld)).
  • FieldType-当将网格绑定到对象而不是一个真实的模型,将其设置为typeof列将显示的字段。这种情况就是绑定到expando对象,使用OnRead带分组绑定到数据表

外观

  • 标题-在列标题中呈现的文本。关于它的行为,请参阅下面的注释。
  • DisplayFormat-当网格处于显示模式时,用于在单元格中呈现字段值的c#格式字符串。欲知详情,请浏览列显示格式篇文章。
  • TextAlign控件的水平对齐数据细胞。例如,您可以使用此属性右对齐数值列。财产接受ColumnTextAlign枚举值(正确的中心).如果没有设置,文本对齐将取决于页面上现有的样式、默认浏览器行为和文本方向。标题单元格对齐需要使用不同的方法HeaderClass而且自定义CSS——看中心网格列标题文本
  • OnCellRender-在网格列呈现时触发的事件。欲了解更多信息,请阅读专栏事件篇文章。
  • HeaderClass-字符串-在列的标题单元格中添加自定义CSS类。使用它来应用自定义样式或重写默认的网格样式
  • Reorderable-(默认为真正的) -用户是否可以拖动以重新排序这一列。
  • 可调整大小的-(默认为真正的) -用户是否可以调整这一列。
  • 宽度-(默认为) -列的宽度。看到文章获取有关受支持格式的信息。看到栅格列宽度行为有关不同列宽配置的网格行为的详细信息。
  • MinResizableWidth-(默认为30.并忽略较小的值)—期间允许的最小列宽度用户调整.不像宽度字符串属性,这个是十进制,并期望像素值。
  • MaxResizableWidth-(默认为0) -期间允许的最大列宽用户调整.不像宽度字符串属性,这个是十进制,并期望像素值。
  • 可锁定的-(默认为真正的) -决定用户是否可以固定立柱通过列菜单
  • 锁着的-(默认为) -如果该参数设置为true列,以便用户始终可见。
  • 可见-(默认为)—如果该参数设置为隐藏了网格中的列。接受两个保龄球而且bool吗?类型和被当作真正的
  • -可以声明的嵌套标记多个列标头
  • ShowColumnMenu-(默认为真正的)—如果设置为false,则禁用列菜单对于这一列。
  • VisibleInColumnChooser-(默认为真正的类的列选择器中删除该列列菜单

识别

  • Id-网格列的唯一标识符。在列中组织列时,用于将列与列选择器中的相应项关联部分
  • 裁判-标准Blazor引用名称。

数据操作

  • 可编辑的-(默认为真正的) -设置为真正的允许或阻止编辑这个领域的。要编辑数据,还需要一个CommandColumn
  • 滤过性的-(默认为真正的) -设置为所以一个滤过性的Grid将不允许用户筛选特定的列。
  • FilterEditorType-(默认为GridFilterEditorType。DatePicker的默认过滤组件DateTime列将是DatePicker或DateTimePicker。
  • FilterEditorFormat-设置格式的过滤组件字符串.适用于日期时间和数字列。不要使用占位符(例如set“D”,而不是“{0:D}”).
  • 可分类的-(默认为真正的) -设置为所以用户不能排序这一列。
  • Groupable-(默认为真正的) -用户是否可以集团这一列的网格。

模板

  • 模板-此属性也可以用作内部标记,它允许您定义列显示内容.它也可以指向组件名称。
  • 上下文-在内联模板中使用的标准Blazor上下文变量名。
  • EditorTemplate-此属性也可以用作内部标记,它允许您定义列编辑内容.它也可以指向组件名称。
  • FilterCellTemplate-这个属性也可以用作内部标签,它可以让你自定义网格过滤器行.它也可以指向组件名称。
  • FilterMenuTemplate-这个属性也可以用作内部标签,它可以让你自定义网格过滤器菜单.它也可以指向组件名称。

您可以在网格文档的其余部分和我们的现场演示

网格可以自动生成其列出模型的公共属性。

笔记

  • 对于高级操作,如分组,过滤,排序,您必须设置一个列,它所指向的字段必须是字符串或值类型(例如数字、字符串、DateTime、布尔值)。

    • 如果一个未设置的列将不允许对列进行筛选、分组、排序和编辑。
    • 如果指向自定义对象或IDictionary列表,数组错误将在这些操作上抛出,因为在. net中对非基本类型没有已知的数据操作。为了处理这样的场景,您可以将集合和底层模型平铺。
    • 要绑定到嵌套(复杂)模型(也称为导航属性),只需使用包含子类的字段及其自己的字段的名称。有关示例,请参见绑定到复杂对象中的导航属性篇文章。
  • 的列必须指向模型中具有公共getter的属性,以便网格可以显示数据。若要启用编辑,属性必须具有公共setter。例如:

    c#公共类MyModel{公共int WorkinProperty{获取;设置;} //有公共getter和setter,所以可以显示和编辑public int NonWorkingField //没有公共getter,所以网格不能显示这个}

  • 外键-使用外部表和键通常是通过网格模板完成的。你可以在网格-外键知识库文章。

  • 标记的字段将跳过IgnoreDataMemberAttribute执行CUD操作时。它的存在表明该属性不需要成为序列化数据的一部分,并且可以跳过这些字段EF中的惰性加载代理去工作。

  • 如果你不设置标题对于列,网格将取[Display(Name = "我的专栏标题")]来自模型字段的数据注释属性。如果也不可用,则将显示字段的名称。

  • 如果模型有[DisplayFormat(DataFormatString = "{0:C}")]数据注释属性时,显示格式将取自属性中的格式字符串。

  • 如果要防止特定属性的数据突变,可以设置可编辑的的参数(可编辑)数据注释属性对于所需的模型字段。

    • 属性的模型属性生成的列setter或者它是不可访问的(私有)也将不可编辑。
  • 网格使用Activator.CreateInstance < TItem > ();在调用Insert操作时生成一个新项,因此Model应该定义一个Parameterless构造函数。一个变通办法可能是通过网格状态调用Insert用你自己的代码创建对象。

  • 数据网格的集合必须只包含一种模型类型的实例。你不能把网格绑定到一个基类上,然后用继承类的实例填充它的数据(既不是一个也不是多个类型)——来自继承类的额外字段可能不起作用,甚至可能引发异常,因为网格在调用时不会知道它们数据集合为基类类型。

可以通过以下两种方式优化数据库查询:

  • 使用一个这个IQueryable < MyModel >网格的集合数据.网格将在内部构建一个LINQ表达式,只在需要时解析。这可能是有用的数据来自EntityFramework上下文之类的东西。
  • 实现手动数据源操作并自己实现所需的查询。

另请参阅

在本文中
Baidu
map