KendoUI - 如何引用控件?

时间:2013-09-19 21:00:40

标签: javascript jquery kendo-ui kendo-grid kendo-asp.net-mvc

我甚至通过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");                             
        }
    });
});

事件第一次触发时,datepicker是一个可用的对象。 事件的后续触发将datepicker定义为未定义。

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

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

任何人都可以解释一下有什么不同,我在kendo-ui可以做什么来获取每次参考?

1 个答案:

答案 0 :(得分:0)

在尝试了很多方法之后,我开始更多地查看传递给编辑事件的事件参数(我确信其他事件)。解决方案是找到传入的事件对象的控件,而不是试图找到它的网格。在我的例子中,名为“e”的事件对象具有“容器”属性。这个'container'属性实际上是对窗口(弹出对话框)的引用,所以调用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);
    }
    });
});