如何在Kendo UI Grid列模板函数中获取对应字段名称?
如何在Kendo UI Grid列模板函数中获取字段名
其实Kendo UI的列模板函数本身不会直接把字段名作为参数传入,但我们可以通过闭包或者显式传递字段名的方式轻松实现这个需求,下面给你两种实用的方案:
方案一:利用闭包绑定字段名
在定义列配置的时候,我们可以把字段名作为变量传入模板函数的闭包中,这样模板函数内部就能直接访问到这个字段名了:
{ field: "country", template: (function(fieldName) { return function(e){ var tmp = ""; var guid = kendo.guid(); // 这里就能直接拿到字段名fieldName了 console.log("当前字段名:", fieldName); $.each( e[fieldName], function( key, value ) { tmp += '<span class="xyz">' + value.text + '</span>'; }); return tmp; }; })("country"), // 这里传入对应的字段名 }
这种方式的好处是模板逻辑可以复用,如果你有多个列需要类似渲染逻辑,只需要修改传入的字段名即可。
方案二:显式引用列配置对象
如果你希望更灵活地获取列的完整配置(不止字段名),可以先单独定义列配置对象,再在模板函数中直接引用它的字段属性:
// 先定义列配置对象 var countryColumn = { field: "country", template: function(e){ var tmp = ""; var guid = kendo.guid(); // 这里直接通过列对象获取字段名 console.log("当前字段名:", countryColumn.field); $.each( e[countryColumn.field], function( key, value ) { tmp += '<span class="xyz">' + value.text + '</span>'; }); return tmp; }, }; // 将列对象加入Grid的配置中 $("#grid").kendoGrid({ columns: [countryColumn, /* 其他列 */], // 其他Grid配置项... });
补充说明
Kendo UI并没有像kendo.guid()那样的内置方法直接在模板函数中获取字段名——毕竟模板函数的设计初衷是专注于数据渲染,而非列元数据的访问。但通过上面的闭包或显式引用的方式,完全可以满足你的需求。
内容的提问来源于stack exchange,提问作者Severin
相关产品推荐
相关产品推荐

