好了,我现在有了这个Kendo Grid代码:
var ds = [
{ "ID" : 1, "attach" : "true", "attachment" : "http://www.google.com" },
{ "ID" : 2, "attach" : "false", "attachment" : "" },
{ "ID" : 3, "attach" : "true", "attachment" : "http://www.wikipedia.com" },
{ "ID" : 4, "attach" : "false", "attachment" : "" }
];
var $value = "asd";
var grid = $("#grid").kendoGrid({
dataSource: ds,
columns: [
{ field: "ID", Title: "ID", filterable: false, sortable: false, hidden: false },
{ field: "attach", Title: "Attached?", filterable: false, sortable: false, hidden: false},
{
title: "Attachment Link",
template: '#if(attachment != ""){' +
'$value = attachment' +
'#<input type="button" class="info" value="IT WORKS" />' +
'#}else{#' +
'<label>NOPE</label>' +
'#}#',
headerTemplate: "<label> Attachment </label>",
sortable: false,
filterable: false,
width: 100
}
]
}).data("kendoGrid");
//this is where I have been playing around trying to get the value. its not working. Shocker :D
//I changed this part frequently, this is just the latest form I got it in.
$(".info").on("click", function() {
var row = $(this).closest("tr");
var item = grid.dataItem(row);
var show = $value;
alert("The item is:" + show);
});
我检查一行中是否有任何非空值,如果是,我在那里放一个按钮。
当我尝试将值分配给附件时,(&#39; value =附件&#39;部分)我结果未定义,但如果我附上这样的附件:
'#if(attachment != ""){#' +
'#= attachment#' +
'<input type="button" class="info" value="IT WORKS" />'
'#}else{#' +
'<label>NOPE</label>' +
'#}#',
我可以打印分配给它的实际链接。当我单击与其关联的按钮时,如何获取附件的值(单独,而不是列表或数组或某个)?
这是小提琴:https://jsfiddle.net/phyrax/zz1h65f5/
提前致谢!
答案 0 :(得分:0)
Kendo grid column template是HTML内容的模板。
如果你想在html代码中放置一些元素,你应该使用模板。我看,你想在这个模板中执行JS代码。为此,您应在模板中定义<script> $value = #= attachment# </script>
。
其他问题是你想要做什么,因为当你做这样的事情时,它会在页面加载期间为每一行执行。因此$value
的值将始终设置为最后一行。
编辑首先评论:
您应该考虑将模板定义为
<input type="button" class="info" value="IT WORKS" onclick="setAttachment('#= attachment#')" />
并在全局JS代码中定义函数
function setAttachment(attachmentValue)
{
$value = attachmentValue;
}
这是解决此任务的更合适的方法。单击触发器,而不是立即执行操作。