繁体   English   中英

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM