我甚至通过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可以做什么来获取每次参考?
答案 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);
}
});
});