如何将 Telerik 网格列绑定到作为列表的子数据对象?

Posted

技术标签:

【中文标题】如何将 Telerik 网格列绑定到作为列表的子数据对象?【英文标题】:How to bind a telerik grid column to a child data object that is a list? 【发布时间】:2011-03-29 15:42:52 【问题描述】:

我有一个网格,可以使用http://www.telerik.com/help/aspnet-ajax/grdbindingtosubobjects.html 中定义的语法将许多子数据对象毫无问题地绑定到列。

但是,我想不通的是如何聚合作为列表或集合的子对象。例如,如果我有一个 Customer 对象并且我想获取客户的第一个街道地址,我会在标准 GridBoundColumn 上使用 DataField="Customer.Addresses[0].Street"。 我怎样才能得到地址的计数?我尝试了各种 GridCalculatedColumn 数据字段和表达式,但无济于事。我正在寻找类似的东西:

这当然行不通。事实上,如果我尝试对任何虚线数据字段进行计数,我会得到一个例外

System.Data.SyntaxErrorException:聚合参数中的语法错误:需要一个可能带有'Child'限定符的列参数。

例如,仅尝试使用 Count(0) 的表达式并将 DataFields 设置为 Customer.FirstName(其中只有一个),会导致在运行时引发该异常。对非点数据字段(例如 SendDate)执行相同操作不会导致相同的异常。

【问题讨论】:

【参考方案1】:

您似乎已经从Telerik forums 收到了这个问题的答案,但对于那些可能偶然发现这个问题并寻找答案的人来说。

本质上 RadGrid 不支持在其 DataFields 中包含集合,并且可以找到支持的可绑定属性类型 here。因此,就此聚合而言,您可以在将其绑定到 RadGrid 之前对该集合进行计算并定义一个聚合列,或者您可以考虑使用类似于this demo 中的页脚。

【讨论】:

我喜欢在将集合绑定到 RadGrid 之前对其进行计算的想法,但是如何在聚合列中得到它?

以上是关于如何将 Telerik 网格列绑定到作为列表的子数据对象?的主要内容,如果未能解决你的问题,请参考以下文章

WPF 网格与孩子。如何将子 IsEnabled 绑定到父行

Telerik MVC Grid:如何在列中使用 DropDownList?

将列表绑定到包含复选框列的数据网格视图

Telerik MVC Extensions Grid - 如何让网格过滤器应用于初始 LINQ 查询或传递给 db?

自定义日期 colmn telerik 网格的过滤器选项

正确单击数据网格中的按钮时,Telerik RadGridView 选定项绑定不起作用