如何使用 Kendo 网格中 url 列的模板显示 window

How to show a window with template from a url column in Kendo Grid

我有一个 kendoGrid,其列使用如下所示的命令:

command: { text: "View Details", click: showDetails }

该命令调用打开 kendoWindow 的 showDetails 方法:

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。该命令有一个单击 属性,但模板没有,并且尝试将 url 的 onclick 属性设置为我用于命令的单击 属性 的相同值没有工作,我不确定如何修改它以使其按我的意图工作。

要在 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 道场示例:http://dojo.telerik.com/ACozi