jqGrid с датчиком не может безопасно хранить данные - PullRequest
1 голос
/ 25 апреля 2011

Я использую jqGrid с редактированием ячеек и средством выбора даты.Все работает хорошо, за исключением того, что из-за какой-то странной обработки событий существует риск потери пользовательских данных.Когда ячейка выбрана и ее дата установлена, текст помещается обратно в редактируемую ячейку, но он не передается обратно на сервер, если не происходит какая-либо навигация или когда нажата клавиша ввода с установленной датой.Это означает, что если пользователь просто вводит данные, и он не выполняет эти дополнительные действия (о которых нет обратной связи), отредактированное значение хранится в подвешенном состоянии.

Очевидное решение - использовать onClose onDatePicker.Это вызывается, но, похоже, нет способа получить данные, записанные на сервер.Я пытался использовать saveCell, но после записи данных текстовый редактор ячеек остается открытым, поэтому, если данные не могут быть записаны должным образом, создается впечатление, что все в порядке.Я также пробовал editCell, но, похоже, он бесконечно повторяется или создает какой-то цикл.Я также попытался сфальсифицировать keydown следующим образом:

colModel :[ 
  ...  
  {name:'date', index:'date', width:100, editable: true,
   editoptions: {
   size: 10, maxlength: 10,
   dataInit: function(elem){ 
               setTimeout(function(){ 
                 $(elem).datepicker({ 
                   onClose: function(dateText, inst) { 
                     var e = jQuery.Event("keydown");        
                     e.which = 13;
                     $(elem).trigger(e);
                   }
                 ...

Я все еще справляюсь с jquery и jqgrid, поэтому любые советы будут очень кстати.

1 Ответ

0 голосов
/ 25 апреля 2011

Возможно, вам следует установить фокус, прежде чем нажимать клавишу "Ввод"?Как

setTimeout(function(){
    $(elem).focus().trigger({ type: 'keypress', charCode: 13 });
},100);

Не могли бы вы проверить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...