javascript - 如何在 Kendo Grid 中的 url 列中显示带有模板的窗口

标签 javascript templates kendo-ui

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

相关文章:

javascript - jQuery.data 只保存最后一个 Element 的数据

javascript "for (;;);"结构

c++ - 让模板通过指定 bitesize 在 char/short/int 之间进行选择?

jquery - JQuery UI Mobile 和 Kendo UI Mobile 可以在一个项目中共存吗?

javascript - 变换 : translateX() issue for kendo-mobile-switch on ngDialog in AngularJS

javascript - 如何在 html2canvas 中插入 jquery

javascript - 将 jWebSockets channel 插件与 node.js 结合使用

c++ - 函数指针数组的类模板参数推导适用于 clang,但不适用于 gcc

templates - GitHub:Template 和 Fork 概念之间有什么区别以及何时使用?

kendo-ui - Datetimepicker设置不同格式的值