如何将 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?