2014-10-24 5 views
0

мне нужно jqgrid обновить всю страницу, а не только сеткумне нужно jqgrid обновить всю страницу, а не только сетку

У меня есть jqgrid, который отображает сведения о задании по ремонту автомобилей. Прямо сейчас, у меня есть перезагрузка сетки, используя следующий скрипт, и мне нужно изменить его, чтобы он обновлял всю страницу, чтобы обновить промежуточные и полные поля (которые сидят вне сетки). Вот мой соответствующий код, любая помощь будет принята с благодарностью:

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

     $grid.jqGrid('navGrid', '#pager', {add: false, edit: false, del: true, search:false},{reloadAfterSubmit:true,afterSubmit:commonSubmit,closeAfterEdit:true,width:"400"},{reloadAfterSubmit:true,afterSubmit:commonSubmit,closeAfterAdd:false,width:"400"},{url:"editGrid.cfc?method=delUser",closeAfterDelete:true,reloadAftersubmit:false,afterSubmit:commonSubmit,caption:"Delete",msg:"Delete selected",width:"400"}); 

     $grid.jqGrid('inlineNav', '#pager', {addParams:{position:"last",addRowParams:editOptions},editRowParams:editOptions}); 
    }); 
+0

Кстати, я попытался изменить $ self.trigger ("reloadGrid"); to $ self.trigger ("location.reload()"); но это просто заставляет новую строку исчезать, пока я не обновляю страницу вручную, используя F5. (Я также попробовал resetForm() и получил те же результаты) –

ответ

0

Если вам действительно нужно перезагрузить всей текущей HTML страницы можно вызвать location.reload(); или location.reload(true);.

Если вам нужно просто обновить некоторые элементы на странице, которые находятся за пределами сетки, вы можете включить в ответ сервера значения (промежуточные и итоговые значения) и заполнить значение внутри loadComplete10 или beforeProcessing обратного вызова. Внутри обоих loadComplete и beforeProcessing первый параметр data содержит полный ответ сервера. Таким образом, вы можете получить от ответа требуемые значения (промежуточный итог и общий) и использовать jQuery.val или какой-либо другой метод для изменения внешнего элемента страницы.

+0

Спасибо, Олег. Я попытался использовать location.reload(), и когда я его изменил, сетка обновится до исходного состояния (без новой строки), пока я не ударил вручную F5, а затем снова появится. Самое забавное, что при удалении он вызывает функцию commonSubmit, которая включает команду resetForm(), и она отлично работает при удалении строки. По-видимому, это влияет только на то, что оно находится внутри переменной editOptions. Я пробовал все, что мог подумать в течение последних 2 дней, и, похоже, не может заставить его работать. –

+0

@ RaymondMeade: Добро пожаловать! Вы использовали 'location.reload();' или 'location.reload (true);'. Последнее не должно использовать локальный кеш и перезагружать страницу с сервера. Может быть также важно, как вы заполнили сетку. HTTP-ответ может содержать параметр HTTP-кеша в HTTP-заголовке. Например, я обычно устанавливаю «Cache-Control: private, max-age = 0» в ответе сервера с данными JSON для сетки. – Oleg

+0

Я пробовал это в обоих направлениях. Я даже попробовал window.location.reload (true) и resetForm(). Кажется, что ничего не работает, кроме reloadGrid. Я думаю, что проблема находится где-то в переменной editOptions, но я не знаю синтаксиса javascript или jquery достаточно хорошо, чтобы понять это. (это мой первый раз с использованием jquery или jqgrid) –

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