2013-09-30 2 views
0

Я использую метод inlineNav для inline add следующим образом.Перезагрузка сетки после добавления новой строки в jQgrid Inline edit с использованием inlineNav

jQuery("#mygrid").jqGrid("inlineNav", "#mygrid_pager1",{"addParams":{"position":"last","addRowParams":{"keys":true}}}); 

Он отлично работает. Теперь мне нужно перезагрузить сетку после добавления новой строки. Я пробовал следующее, и это не сработало.

jQuery("#mygrid").jqGrid("inlineNav", "#mygrid_pager1",{"addParams":{"position":"last","addRowParams":{"keys":true, "successfunc":"function(id){$("mygrid").trigger("reloadGrid");"}}}); 

Любые указатели оцениваются!

ответ

3

Прежде всего значения successfunc должна быть функция, а не строка (см в текущем коде "successfunc":"...")

Я рекомендовал бы вам попробовать добавить те же параметры, как для addParams.addRowParams и до editParams вариантов inlineNav. Кроме того, я бы порекомендовал вам разместить $(this).trigger("reloadGrid") от successfunc внутри setTimeout, чтобы начать перезагрузку после стандартная обработка сохранения строки.

Так что код может быть примерно следующее:

var editOptions = { 
     keys: true, 
     successfunc: function() { 
      var $self = $(this); 
      setTimeout(function() { 
       $self.trigger("reloadGrid"); 
      }, 50); 
     } 
    }; 

$("#mygrid").jqGrid("inlineNav", "#mygrid_pager1", { 
    addParams: { 
     position: "last", 
     addRowParams: editOptions 
    }, 
    editParams: editOptions 
}); 
+0

Я собираюсь дать ему попробовать. Спасибо, Олег. Я также попробовал reloadAfterSubmit и установил его в true, и мне интересно, почему это не сработало. – devXen

+0

@ToadyMores: Добро пожаловать! Вы устанавливаете 'reloadAfterSubmit' только для добавления или для операций добавления и редактирования? Проблема в том, что кнопка «Сохранить» inlineNav не достаточно хорошо различает параметры и может использовать параметры редактирования ('editParams'), даже если вы добавили новую строку. Некоторые из ошибок уже исправлены в коде jqGrid на github. – Oleg

+0

Вы правы, я глупо ошибался, окружая функцию кавычками. Как только кавычки перемещаются, он работает! Я также добавил setTimeout, основываясь на вашем коде. – devXen

0

Я думаю, что самый простой способ после того, как вы закончите добавлять что-то, вызовите функцию перезагрузки отдельно, как jQuery("#myGrid").reload();

Смежные вопросы