2010-10-05 44 views
7

Usando jqGrid multiple searching ¿cómo puede "borrar" programáticamente las opciones de búsqueda?jqGrid - cómo restablecer las opciones de búsqueda?

El "claro" debe garantizar que no se filters están siendo enviados al servidor y que el buscador de interfaz gráfica de usuario no contiene ningún criterio de búsqueda ..

Actualmente estamos llamando trigger("reloadGrid"). Nos gustaría llamar a un método de tipo clearSearchCrieria() antes de reloadGrid para que no se pasen filters al servidor o aparecer en el cuadro de búsqueda de la GUI ...

??

Respuesta

3

hacer clic en el botón "Reset" intento:

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

a tratar de que - mi puesto podría ser un poco engañoso .. Lo que estoy tratando de hacer está claro las opciones de búsqueda y llama a 'trigger (' reloadGrid ') '. Su sugerencia podría funcionar ... aunque preferiría no llamar literalmente 'clic' .. quisiera llamar a un método' clearSearchOptions() 'luego llamar a' trigger ("reloadGrid") ' –

5

Para renovar el filtro se puede modificar el parámetro de postData jqGrid directamente. Puede acceder a él con $("#list").jqGrid('getGridParam','postData') o $("#list")[0].p.postData. Si se establece un filtro, las propiedades de la postData parecen siguiente:

_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 

Para restablecer las propiedades que se pueden hacer siguiendo

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

Si utiliza Advanced Searching en lugar de Single Searching debe borrar filters propiedad en lugar de searchField, searchOper y searchString.

Al final se puede llamar $("#list").trigger("reloadGrid",[{page:1}]); para recargar la rejilla contiene comenzando con el número de página 1.

+0

Gracias Oleg - pero esto no parece restablecer la interfaz de usuario de búsqueda de la cuadrícula. Ese es el criterio de búsqueda anterior que aún aparece cuando hace clic en el botón de búsqueda en la barra de navegación. Me gustaría aclarar esto. –

+1

@Marcus: preguntaste cómo restablecer las opciones de búsqueda de jqGrid. Así que entendí que abriste las opciones del conjunto de diálogo de búsqueda y luego cerraste el cuadro de búsqueda. Las opciones de búsqueda permanecen guardadas en el jqGrid. Entonces respondí cómo se restablecieron las opciones. ¿A qué te refieres? Por cierto, ¿usas la opción 'recreateFilter: true'? – Oleg

+0

No usamos la opción 'recreateFilter' .. si manualmente configuramos postdata, los datos de búsqueda permanecen guardados en la cuadrícula. ¿Cómo se elimina la búsqueda de la cuadrícula para que la GUI no muestre ninguna opción de búsqueda seleccionada? –

15

Se puede utilizar el siguiente método:

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

Pero, como señaló Oleg, tendrá para usar la opción recreateFilter:true en su definición de jqgrid si también desea que se borre el cuadro de búsqueda jqgrid.

+0

gracias, funcionó para mí: no pude establecer los datos en la Subgrid, así que escribí $ ("# Subgrid").jqGrid ('setGridParam', {search: false, postData: {"filters": ""}}); $ ("# Subgrid"). SetGridParam ({'data': SubgridData}). Trigger ('reloadGrid', [{page: 1}]); –

+0

@Jimbo No creo que reloadGrid sea obligatorio, para mí funciona sin activar reloadGrid. De todos modos, gracias por los consejos. –

2

La única manera en que podía hacerlo bien - y estoy seguro de que no es el camino correcto es el siguiente:

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

donde ColNameX son los nombres de las columnas

+0

ideed! ¡Gracias! ¡Combiné tus últimas dos líneas para limpiar los cuadros de búsqueda y el primero, pero adicionalmente activé la recarga! – Paschalis

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

escritura enableClear:true en su filterGrid

0

uso exclusivo

$ ("# re td fresh_navGrid "). click();

2

Se restablecerá todas las opciones de búsqueda

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

Haciendo un simple cambio a '$ (': input [id * =" gs _ "]'). Val (" ");' encontrará todos los elementos del formulario, que incluye cuadros de selección. – Joseph

0

he añadido el botón de actualización externa para resolver esto.

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}]);   

});

Gracias/Saludos, Khine lae

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

Esta funciona de descanso Opciones de búsqueda y volver a cargar el jqGrid

Cuestiones relacionadas