我有一个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/

10-14 19:21
查看更多