我有一个serverBound网格,我试图为列做一个条件语句。我知道.clientTemplate()
不适用于服务器指示的数据源,所以我想知道是否有人对替代方法有任何想法做一个简单的条件语句。
例:
.ClientTemplate(
"# if (tmpIsActive && Active == 1) { # " +
"Sales" +
" # } else if (tmpIsActive && Active == 2) { # " +
"Corp" +
"# } #")
这有两种方法。
https://dojo.telerik.com/OWObuLOB这个道场向你展示如何做它作为一个template
我所做的就是提取你的简单逻辑并将其应用于使用kendo模板引擎渲染的模板中。
<script id="conditionalTemplate" type="text/x-kendo-template">
#if(data.OrderID %2){#
I am an odd Number
#}else{#
I am an Even Number
#}#
</script>
然后在列设置中调用此模板,如下所示:
{
field: "ShipCity",
title: "Conditional Field",
template: kendo.template($("#conditionalTemplate").html())
}
我们可以使用模板在这里做同样的技巧,但在.ClientTemplate
字符串中我们把它放在模板中:
columns.Bound(c => c.SomeColumn)
.Width(125)
.ClientTemplate("#=kendo.template($('\\#conditionalTemplate').html())(data)#");
此方法的替代方法是从javascript函数调用模板,为您执行此templating
。像这样的东西:
.ClientTemplate("#=someTemplateFunction('{templateName}', data)#");
function someTemplateFunction(templateName, data){
var template = kendo.template($('#'+ templateName).html());
var result = template(data);
return result;
}
使用最容易理解的版本。
可能值得查看模板文档,以帮助您更好地了解您可以做什么和不能做什么:https://docs.telerik.com/kendo-ui/framework/templates/overview
有任何问题让我知道,我会为你改进答案。