Kendo UI Grid ServerBound ClientTemplate用于条件语句的替代方法

时间:2019-03-18 21:19:50

标签: kendo-ui telerik

我有一个serverBound网格,我试图为该列做一个条件语句。我知道.clientTemplate()不能与服务器所管理的数据源一起使用,因此我想知道是否有人对替代方法有任何想法,可以做一个简单的条件语句。

示例:

 .ClientTemplate(
      "# if (tmpIsActive && Active == 1) { # " +
      "Sales" +
      " # } else if (tmpIsActive && Active == 2) { # " +
      "Corp" +
      "# } #")

1 个答案:

答案 0 :(得分:0)

这里有两种方法。

1)Javascript版本

https://dojo.telerik.com/OWObuLOB此dojo向您展示了如何做为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>

此模板随后称为int,其列设置如下:

 {
     field: "ShipCity", 
     title: "Conditional Field", 
     template: kendo.template($("#conditionalTemplate").html())
 }

2)服务器版本(即MVC包装器)

我们可以使用模板在此处完成相同的技巧,但是在.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

任何问题都会让我知道,我会为您改善答案。