【问题标题】:Kendo UI Grid ServerBound ClientTemplate alternative for conditional statementKendo UI Grid ServerBound ClientTemplate 替代条件语句
【发布时间】:2019-03-18 21:19:49
【问题描述】:

我有一个 serverBound 网格,我正在尝试为该列执行条件语句。我知道.clientTemplate() 不适用于由服务器引导的数据源,所以我想知道是否有人对执行简单条件语句的替代方案有任何想法。

示例:

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

【问题讨论】:

    标签: kendo-ui telerik


    【解决方案1】:

    这里有两种方法。

    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) 服务器版本(即 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

    有任何问题请告诉我,我会为您改进答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 2014-05-28
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多