Kendo ui 带嵌套计算的剑道UI网格列模板-如何?

Kendo ui 带嵌套计算的剑道UI网格列模板-如何?,kendo-ui,kendo-grid,kendo-template,Kendo Ui,Kendo Grid,Kendo Template,剑道UI v2015.2.805 我有一个带有模板列的KendoGrid,它执行一个条件来确定是否应该添加一组按钮,如果需要添加额外的求值,我不知道如何嵌套它们 以下项目可行,但未进行所需的额外评估: { field: "Served", title: "Served", template: "<div>" + "#= (Kind==0 || Kind==7) ? '" + "<button type=\"button\" data-id=\"12345\">Yes

剑道UI v2015.2.805

我有一个带有模板列的KendoGrid,它执行一个条件来确定是否应该添加一组按钮,如果需要添加额外的求值,我不知道如何嵌套它们

以下项目可行,但未进行所需的额外评估:

{ field: "Served", title: "Served", 
template: "<div>" + 
"#= (Kind==0 || Kind==7) ? '" + 
"<button type=\"button\" data-id=\"12345\">Yes</button>" + 
"<button type=\"button\" data-id=\"54321\">No</button>" + 
"' : " +  
"'NO BUTTON HERE'" +  
"#</div>"
{字段:“已送达”,标题:“已送达”,
模板:“+
“#=(种类==0 | |种类==7)?”+
“是”+
“否”+
"' : " +  
“‘这里没有按钮’”+
"#"
我将其多行排列以使其看起来很好,但事实并非如此。我的想法是,如果种类=0或7,则显示两个按钮,否则不会。效果很好

但是,我需要将数据id求值为#=id#,因此我尝试:

" <button type=\"button\" data-id=\"' #= ID # '\">Yes</button>"
“是”
我知道我需要从带引号的字符串中“退出”以使计算生效,因为我对整个表达式使用了双引号,所以我将以单引号字符串的形式返回条件中的按钮,并因此转义按钮属性,但我无法让它计算#=

我尝试了很多不同的组合,我都迷路了

那么,“正确的方法”是什么呢

解决方案:

接受David的答案,并修改为在函数中使用模板评估:

{ field: "Served", title: "Served", 
  template: function (data) {
    switch (data.Kind) {
      case 0:
      case 7:
        var template = kendo.template("<button type='button' data-id='#= ID #' >Yes</button><button type='button' data-id='#= ID #'>No</button>");
        return template(data);
      default:
        return '';
    }
}
{字段:“已送达”,标题:“已送达”,
模板:函数(数据){
开关(data.Kind){
案例0:
案例7:
var-template=kendo.template(“YesNo”);
返回模板(数据);
违约:
返回“”;
}
}

让函数执行初始测试将删除一个级别,并允许进行“正常”评估。

您可以使用函数来代替,我相信这将使您的工作更加轻松

您的模板可以是
“#=构建按钮(数据)#”

下面是一个代码示例


var people=[
{id:1,姓:“大卫”,姓“勒比”},
{id:2,名字:'John',名字:'Doe'}
];
$(“#网格”).kendoGrid({
数据源:{
运输:{
阅读:功能(选项){
选择。成功(人);
}
}
},
栏目:[
{字段:'firstName',标题:'firstName'},
{字段:'lastName',标题:'lastName'},
{标题:“操作”,模板:'#=构建操作(数据)#'}
]
});
函数构建操作(模型){
如果(model.firstName==“David”){
返回“你好,大卫”;
}
返回“”;
}

我不确定您是否在使用asp.net mvc构建器,因此我提出了一个解决方案,该解决方案很容易与mvc构建器一起使用。但如果您是客户端并控制完全初始化,这是正确的解决方案:)
function buildButtons(model) {
    if (model.Kind == 0 || model.Kind == 7) {
        return "hello world";
    }

    return "";
}
<div id="grid"></div>
  <script>
  var people = [
    { id: 1, firstName: 'David', lastName: 'Lebee' },
    { id: 2, firstName: 'John', lastName: 'Doe' }
  ];

  $('#grid').kendoGrid({ 
        dataSource: {
        transport: {
            read: function(options) {
            options.success(people);
          }
        }
      },
        columns: [
        { field: 'firstName', title: 'First Name'  },
        { field: 'lastName', title: 'Last Name' },
        { title: 'Actions', template: '#= buildActions(data) #'}
      ]
  });


  function buildActions(model) {
        if (model.firstName == "David") {
        return 'Hello David';
      }

      return '';
  }
  </script>