0

我什至通过 grid.bind 处理编辑:

$(document).ready(function () { 
    //  Dialog related
    var grid = $("#MyGrid").data("kendoGrid");

    grid.bind("edit", function (e) {
        var datePicker = $("#EndDate").getKendoDatePicker();
        if (e.model.isNew()) {
            e.container.kendoWindow("title", "Add Something");
        }
        else {
            e.container.kendoWindow("title", "Edit Something");                             
        }
    });
});

事件第一次触发时,日期选择器是一个可用的对象。事件的后续触发具有未定义的日期选择器。

更新:我还创建了一个执行相同操作的示例非剑道页面:

http://jsbin.com/uZEqiMo/1/edit?html,js,输出

任何人都可以解释有什么区别以及我可以在 kendo-ui 中做什么来每次都获得参考吗?

4

1 回答 1

0

在尝试了多种方法之后,我开始更多地研究传递给编辑事件的事件参数(我相信其他事件)。解决方法是找到传入的事件对象的控件,而不是试图在网格中找到它。在我的例子中,名为“e”的事件对象具有“容器”属性。这个“容器”属性实际上是对窗口(弹出对话框)的引用,因此在此调用 jquery 的 find 使其工作。这是更新的代码:

$(document).ready(function () { 
    //  Dialog related
    var grid = $("#MyGrid").data("kendoGrid");

    grid.bind("edit", function (e) {
        //  Note: getKendoDatePicker below you could be substituted with .data("kendoDatePicker") // Right way
        var datePicker = $(e.container).find("EndDate").getKendoDatePicker();

        // var datePicker = $("#EndDate").getKendoDatePicker(); - Wrong way
        if (e.model.isNew()) {
        e.container.kendoWindow("title", "Add Something");
        datePicker.enable(false);
    }
    else {
            e.container.kendoWindow("title", "Edit Something");
            datePicker.enable(true);
    }
    });
});
于 2013-09-23T18:30:16.260 回答