2015-03-17 2 views
1

У меня есть 4 таблицы jqGrid в файле php и передается различный json-массив для каждой таблицы сетки. Данные, которые я показываю на сетке, представлены из 1 таблицы с различными условиями sql.Перезагрузка таблиц JqGrid после редактирования и сохранения любой строки

Я использую функции редактирования инлайн для всех сетей, и когда я редактировать и сохранять строку из table1, я хочу, чтобы все сетки должны получить обновить так, что если строка, которая была ранее отредактированное это существует в следующих таблицах должен исчезнуть автоматически. Я хочу перезагрузить все таблицы сетки после редактирования любой строки в любой таблице. Я написал следующий код:

<table id="jqgrid"></table> 
<div id="pjqgrid"></div> 

<table id="jqgrid1"></table> 
<div id="pjqgrid1"></div> 

<table id="jqgrid2"></table> 
<div id="pjqgrid2"></div> 

<table id="jqgrid3"></table> 
<div id="pjqgrid3"></div> 

<script> 
pageSetUp(); 
var myEditOptions = { 
    keys: true, 
    successfunc: function (response) { 
     // alert(JSON.stringify(response)); 
     var msg=response.responseText; 
     var n =msg.search("Updated"); 
     //alert(n); 
     if(n>=0) 
     { 
      $(".inner").html("<div class='alert alert-success fade in'>  <button class='close' data-dismiss='alert'>X</button><i class='fa-fw fa fa-thumbs-up'></i> "+msg+" </div>"); 
     } 
     else 
     { 
      $(".inner").html("<div class='alert alert-danger fade in'><button class='close' data-dismiss='alert'>X</button><i class='fa-fw fa fa-thumbs-down'></i> "+msg+" </div>");  
     } 
     $("#jqgrid").trigger('reloadGrid'); 
     $("#jqgrid1").trigger('reloadGrid'); 
     $("#jqgrid2").trigger('reloadGrid'); 
     $("#jqgrid3").trigger('reloadGrid'); 
     jQuery("#jqgrid").jqGrid('resetSelection'); 
     jQuery("#jqgrid1").jqGrid('resetSelection'); 
     jQuery("#jqgrid2").jqGrid('resetSelection'); 
     jQuery("#jqgrid3").jqGrid('resetSelection'); 
     return true;  
    }, 
    errorfunc: function (rowid,response) { 
     //alert(rowid); 
    }, 
    afterrestorefunc:function (rowid,response) { 
     jQuery("#jqgrid").jqGrid('resetSelection'); 
    } 

}; 
</script> 
+0

Что ваш вопрос? Какая у вас проблема в настоящее время? – Oleg

+0

после сохранения anyrow в любой таблице, я хочу обновить все решетки, чтобы данные, которые я показываю в таблице, должны обновляться. –

+0

Извините, но это не вопрос. Вы уже отправили код, который вызывает 'reloadGrid'. Таким образом, вы должны описать, что работало некорректно в вашем текущем коде, что ожидает результатов и что вы видите вместо этого. Я отправил свой ответ, где я рекомендую вам использовать обратный вызов 'aftersavefunc' вместо' successfunc' и сделать перезагрузку * после * завершения, если редактирование строки (нужно использовать 'setTimeout'). – Oleg

ответ

0

Было бы вы рекомендовать использовать aftersavefunc вместо successfunc для перегрузки сеток. Кроме того, вы должны разместить .trigger("reloadGrid") внутри setTimeout. Это позволяет закончить обработку редактирования перед запуском перезагрузки:

var myEditOptions = { 
    keys: true, 
    aftersavefunc: function() { 
     setTimeout(function() { 
      $("#jqgrid,#jqgrid1,#jqgrid2,#jqgrid3").trigger("reloadGrid"); 
     }, 50); 
    }, 
    ... 
}; 
Смежные вопросы