Kendo UI Grid ServerBound ClientTemplate替代条件语句

问题描述 投票:0回答:1

我有一个serverBound网格,我试图为列做一个条件语句。我知道.clientTemplate()不适用于服务器指示的数据源,所以我想知道是否有人对替代方法有任何想法做一个简单的条件语句。

例:

 .ClientTemplate(
      "# if (tmpIsActive && Active == 1) { # " +
      "Sales" +
      " # } else if (tmpIsActive && Active == 2) { # " +
      "Corp" +
      "# } #")
kendo-ui telerik
1个回答
0
投票

这有两种方法。

1)Javascript版本

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())
 }

2) Server Version (i.e. MVC Wrappers)

我们可以使用模板在这里做同样的技巧,但在.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

有任何问题让我知道,我会为你改进答案。

© www.soinside.com 2019 - 2024. All rights reserved.