2010-10-05 2 views
7

Использование jqGrid multiple searching Как вы можете программно «очистить» параметры поиска?jqGrid - как сбросить параметры поиска?

«ясный» должен обеспечить не filters не посылаются на сервер и что окно поиска GUI не содержит каких-либо критериев поиска ..

Мы в настоящее время вызова trigger("reloadGrid"). Мы хотим вызвать метод типа clearSearchCrieria() перед reloadGrid, чтобы filters не передавался на сервер или не отображался в окне поиска GUI.

??

ответ

3

нажать кнопку «Сброс» попробовать:

$(".ui-reset").click(); 
+0

Попробую что - мой пост может быть немного вводит в заблуждение .. То, что я пытаюсь сделать очистить параметры поиска и вызвать 'trigger (" reloadGrid ")'. Ваше предложение может работать .. хотя предпочли бы, чтобы буквально не называть 'click' .. хотелось бы вызвать метод clearSearchOptions(), а затем вызвать' trigger ("reloadGrid") ' –

5

Чтобы сбросить фильтры, которые можно изменить параметр jqGrid postData непосредственно. Вы можете получить к нему доступ с помощью $("#list").jqGrid('getGridParam','postData') или $("#list")[0].p.postData. Если фильтр установлен, свойство postData выглядеть следующим образом:

_search  true   Boolean 
nd   1286296925096 Number 
page   1    Number 
rows   10    Number 
searchField "id"   String 
searchOper "lt"   String 
searchString "5"   String 
sidx   "id"   String 
sord   "desc"   String 

Чтобы сбросить свойства, которые вы можете сделать следующее

var postdata = $("#list").jqGrid('getGridParam','postData'); 
postdata._search = false; 
postdata.searchField = ""; 
postdata.searchOper = ""; 
postdata.searchString = ""; 

Если вы используете Advanced Searching вместо Single Searching вы должны очистить filters свойства вместо от searchField, searchOper и searchString.

В конце концов, вы можете вызвать $("#list").trigger("reloadGrid",[{page:1}]); перезагрузить сетка содержит, начиная с номера страницы 1.

+0

Спасибо, Олег - но это не похоже на сбросьте пользовательский интерфейс поиска сетки. Это предварительные критерии поиска по-прежнему отображаются, когда вы нажимаете кнопку поиска на панели навигации. Я бы хотел их прояснить. –

+1

@Marcus: Вы спросили, как сбросить параметры поиска jqGrid. Поэтому я понял, что вы открыли параметры диалогового окна поиска и закроете диалоговое окно поиска. Параметры поиска сохраняются в jqGrid. Поэтому я ответил, как сбросить параметры. Что вы тогда имеете в виду? Кстати, вы используете опцию «recreateFilter: true»? – Oleg

+0

Мы не используем опцию 'recreateFilter'. Если мы вручную устанавливаем postdata, данные поиска сохраняются в сетке - как вы удаляете поиск из сетки, чтобы gui не показывал выбранные параметры поиска? –

15

Вы можете использовать следующий метод:

function clearSearchOptions(){ 
    $("#list").jqGrid('setGridParam', { search: false, postData: { "filters": ""} }).trigger("reloadGrid"); 
} 

Но, как Олег отметил, вы будете иметь для использования опции recreateFilter:true в вашем определении jqgrid, если вы хотите, чтобы окно поиска jqgrid также очищалось.

+0

спасибо, это сработало для меня: Мне не удалось установить данные в Subgrid, поэтому я написал $ ("# Subgrid").jqGrid ('setGridParam', {search: false, postData: {"filters": ""}}); $ ("# Subgrid"). SetGridParam ({'data': SubgridData}). Trigger ('reloadGrid', [{page: 1}]); –

+0

@ Jimbo Я не думаю, что reloadGrid является обязательным, для меня он работал без запуска reloadGrid. В любом случае Спасибо за советы. –

2

Единственный способ, которым я мог бы получить это право - и я уверен, что его не правильный путь заключается в следующем:

$("#grid").jqGrid('setGridParam', { postData: { filters: null} }); 
$("#gs_ColName1").val(""); 
$("#gs_ColName2").val(""); 

где ColNameX имена столбцов

+0

ideed! Спасибо! Я объединил ваши последние две строки, чтобы очистить поля поиска и первый, но, кроме того, я вызвал перезагрузку! – Paschalis

0
$("#search").filterGrid("#list", { 
     gridModel: false, 
     enableSearch: true, 
     filterbutton: 'search_button', 
     enableClear:true, 
     filterModel: [{ 
      label: 'First Name', 
      name: 'search', 
      stype: 'text' 
     }); 

Write enableClear:true в вашем filterGrid

0

использования только

$ ("# тд ре fresh_navGrid ") нажмите кнопку().

2

Это сбросит все параметры поиска

$('input[id*="gs_"]').val(""); 
+1

Выполнение простого изменения в '$ (': input [id * =" gs _ "]'). Val (" ");' найдет все элементы формы, которые включают в себя поля выбора. – Joseph

0

Я добавил кнопку внешнего обновления, чтобы решить эту проблему.

jgrid.jsp

<sj:submit id="grid_refreshbutton" value=" Refresh" button="true"/> 

jgrid.js

$(document).ready(function(){ 
jQuery("#grid_refreshbutton").click(function(){ 
    var postData = $("#gridtable").jqGrid('getGridParam','postData'); 
    $("#gridtable").jqGrid('setGridParam',{search:false});  
     $.extend(postData, { filters: "" }); 

     for (k in postData) { 
      if (k == "_search") 
       { postData._search = false;} 
      else if ($.inArray(k, ["nd", "sidx", "rows", "sord", "page", "filters"]) < 0) { 
        delete postData[k]; 
        ("#gs_" + $.jgrid.jqID(k), $("#gridtable").get(0).grid.hDiv).val(""); 
      } 
     } 
       $("#gridtable").trigger("reloadGrid", [{ page: 1}]);   

});

Благодарности/С уважением, Khine LAE

0
$("#resetFilterOptions").click(function(){ 
     $('input[id*="gs_"]').val(""); 
     $('select[id*="gs_"]').val("ALL"); 
     $("#list").jqGrid('setGridParam', { search: false, postData: { "filters": ""} }).trigger("reloadGrid"); 
     }); 

Это один работает Rest параметры поиска и Обновить JQGrid

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