KendoUI - 如何引用控件

KendoUI - How to reference control?

本文关键字:引用 控件 何引用 KendoUI      更新时间:2023-09-26

我甚至通过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,output

谁能解释一下有什么区别,以及我可以在剑道UI中做些什么来每次获得参考?

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

$(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);
    }
    });
});