我有一个kendoGrid,其中包含使用如下命令的列:
command: { text: "View Details", click: showDetails }
该命令调用showDetails方法,该方法将打开kendoWindow:
function showDetails(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
wnd.content(detailsTemplate(dataItem));
wnd.center().open();
}
这按预期工作。现在,我想拥有另一个列,该列是一个当您单击它时执行相同操作的URL。到目前为止,这是该列模板的内容:
template: '<a href="javascript:void(0)" onclick=showDetails>#=CourseTitle#</a>'
我基本上遵循Kendo网站上的命令示例:http://demos.telerik.com/kendo-ui/grid/custom-command。该命令具有click属性,但是模板没有,并且试图将url的onclick属性设置为与该命令的click属性相同的值,因此无法正常工作,并且不确定如何修改此命令它按我的预期工作。
最佳答案
要在onclick属性中调用函数,应使用带方括号的语法:
<a onlick='functionName(this)'></a>
然后在您的函数中,您可以通过参数(即单击目标的dom元素)获取。
因此,您的模板应如下所示:
template: '<a href="javascript:void(0)" onclick="showDetails(this)">#=CourseTitle#</a>'
您需要像这样修改函数showDetails:
function showDetails(e) {
var dataItem, grid;
if(e.currentTarget === undefined){
grid = $(e).closest(".k-grid").data('kendoGrid');
dataItem = grid.dataItem($(e).closest("tr"));
}
else{
e.preventDefault()
dataItem = this.dataItem($(e.currentTarget).closest("tr"));
}
wnd.content(detailsTemplate(dataItem));
wnd.center().open();
}
Kendo UI Dojo工作示例:http://dojo.telerik.com/ACozi
关于javascript - 如何在Kendo Grid的url列中显示带有模板的窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28616635/