2013-09-19 6 views
0

Я обработки редактировать даже через grid.bind:KendoUI - Как справиться с управлением?

$(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 как undefined.

UPDATE: Я также создал образец страницы, не кендо, который делает то же самое:

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

Может кто-нибудь объяснить, в чем разница и что я могу сделать в кендо-интерфейса, чтобы получить ссылку каждый раз?

+0

С моей стороны он всегда говорит -> ложь, ложь, ложь ... –

+0

И это означает, что это НЕ неопределенное, что означает, что у меня есть ссылка на эту кнопку каждый раз. В моем сценарии кендо, если бы я сравнивал с неопределенным, я получил бы ложь, а затем последующие вызовы для редактирования вернули значение true. –

+0

Okey Я вижу taht но, как мы должны воспроизвести проблему? –

ответ

0

После многочисленных попыток сделать это я начал больше рассматривать аргумент события, который передается в событие редактирования (и я уверен, что другие события). Решение состоит в том, чтобы найти контроль над переданным объектом события вместо того, чтобы пытаться найти его сеткой. В моем случае объект события с именем «e» имеет свойство «container». Это свойство «container» на самом деле является ссылкой на окно (всплывающее диалоговое окно), и поэтому вызов 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); 
    } 
    }); 
}); 
Смежные вопросы