如何从 Kendo UI Grid 中的列模板访问列名?
Posted
技术标签:
【中文标题】如何从 Kendo UI Grid 中的列模板访问列名?【英文标题】:How to access column name from column template in KendoUI Grid? 【发布时间】:2012-07-31 07:25:34 【问题描述】:在使用带有列模板的 KendoUI Grid 时遇到以下问题:
我的一行数据如下所示(简化):
Name: 'name', Statuses: [ Name: 'StatusA', Value: 'ValueA' , Name:'StatusB', Value: 'ValueB']
因此,在每一行数据上,我都有一个用于状态的名称-值集合列表。 我有许多以状态名称命名的列(每个状态一个):StatusA、StatusB 等。
在列模板中,我想根据列名放置状态值。 我可以访问模板中的 data.Statuses 并获取状态值,但模板不知道正在呈现哪个列。
有没有办法访问模板中的列名或者作为参数发送?
感谢任何帮助!
【问题讨论】:
【参考方案1】:您可以像这样在模板中包含一个 javascript 函数:
title:"StatusA", field:"Status1", template: "#= formatStatus(data.Statuses[0]) #" ,
title:"StatusB", field:"Status2", template: "#= formatStatus(data.Statuses[1]) #"
这是帮助我发现这一点的文章:
http://www.kendoui.com/forums/ui/grid/grid-cell-template-for-image-with-javascript-selector.aspx
【讨论】:
看起来很棒。但是现在如果我需要读取字段的值:status1,我该怎么做呢? 你也可以使用包装函数:title:"StatusA", template: function(data) return formatStatus(data.Statuses[0]) 【参考方案2】:很遗憾,你不能。我已经断断续续地寻找这个好几个星期了。我终于变聪明了,在模板执行中的 JS 中做了一个 console.log(this),可以看到模板函数签名。唯一的参数是“data”,它包含了行的整个数据模型。
Telerik 的建议是创建一个行模板。这意味着如果您允许隐藏或重新排序列,则在行模板中处理它们成为您的责任,而列模板不必关心这些。如果您想要备用行样式,您还必须提供备用行模板(可能仅因类/样式而异);又是列模板不必担心的事情。
恕我直言,这是 Telerik 的疏忽。
【讨论】:
以上是关于如何从 Kendo UI Grid 中的列模板访问列名?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MVC Razor 在编辑器模板中将 Kendo UI Grid 绑定到我的模型集合
Kendo UI 将 DropDownList 添加到 Grid (MVC)