Kendo ui 带嵌套计算的剑道UI网格列模板-如何?
剑道UI v2015.2.805 我有一个带有模板列的KendoGrid,它执行一个条件来确定是否应该添加一组按钮,如果需要添加额外的求值,我不知道如何嵌套它们 以下项目可行,但未进行所需的额外评估: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
{ 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>