如何从 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 中的列模板访问列名?的主要内容,如果未能解决你的问题,请参考以下文章

与 Kendo-ui Grid 反应 - 错误的列标题

Kendo Grid:如何使用列模板以便编辑器始终可用?

如何使用 MVC Razor 在编辑器模板中将 Kendo UI Grid 绑定到我的模型集合

Kendo UI 将 DropDownList 添加到 Grid (MVC)

Kendo UI Grid 根据其数据类型为列提供不同的模板

Kendo UI Hierarchical datagrid - 如何从详细网格编辑器模板 MVVM 访问根视图模型