Parece que ha habido algunas preguntas aquí con respecto a este tema, y tienen algunas excelentes respuestas, pero parece que mi caso es un poco diferente. Necesito filtrar los registros que se muestran en un jqGrid, pero completamente del lado del cliente.jqGrid Filtering Records
Por una serie de razones, la mejor manera para poblar mi grilla es con una matriz que se emite directamente en JavaScript en la página. La cuadrícula en sí no interactúa con el servidor en absoluto. Tengo algunos AJAX personalizados sucediendo en varios eventos de cuadrícula, pero eso es todo. (Básicamente, estoy integrando esto con un conjunto existente de servicios disponibles que no pueden cambiar significativamente.)
Lo que estoy buscando hacer es filtrar la grilla en base a un simple ingreso de texto y un botón. Mi página tiene la entrada de texto, el botón y una tabla (que se convierte en la cuadrícula en el documento listo). Me gustaría enlazar al evento click del botón (enlace de eventos jQuery normal, nada especial) y usar el valor de la entrada de texto como filtro de visualización en jqGrid.
Por "filtro" me refiero a mostrar solo los registros que contienen una coincidencia (en cualquier campo) para el texto en la entrada. Luego, para mostrar todos los registros, simplemente vacíe la entrada y haga clic en el botón nuevamente. Además, la grilla es multiselección y las selecciones deben persistir a través del filtrado. Solo necesito poder ocultar las filas que no coinciden con lo que está en la entrada.
¿Esto es posible?
Esto se ve genial, gracias! Un par de cosas extrañas están sucediendo para mí. 1: En IE 8 (el único navegador de destino de mi proyecto, las órdenes del cliente) en el entorno proporcionado por el cliente, dice 'JSON' no está definido. Pero no dice esto en su demo en el mismo navegador. 2: en la demostración que configura, no guarda la selección de filas entre el filtrado. Las filas que están seleccionadas, ocultas y luego no ocultas ya no están seleccionadas. Sin embargo, al implementar esto, tuve una idea que puede funcionar de forma más simple y nativa con jqGrid ... – David
¿Qué pasa si, en lugar de filtrar la cuadrícula principal, la funcionalidad del filtro muestra un diálogo modal jQuery UI (fácil) que tiene su propia cuadrícula que muestra los registros filtrados (¿puedo llenar fácilmente 'grid2' con un conjunto de datos filtrados de' grid1'? Imagino el peor de los casos es que copie la matriz y filtre en un bucle con JS simple antes de configurarlo como ' grid2'). Luego, el usuario selecciona lo que quiere y cierra el cuadro de diálogo modal. De cerca, obtengo los ID seleccionados de 'grid2' (fácil) y los configuro como seleccionados en' grid1' (fácil, la demo está en el sitio jqGrid). Y, por supuesto, borrar 'grid2'. ¿Pensamientos? – David
@David: Tiene el error "' JSON' no está definido "porque no incluye [json2.js] (https://github.com/douglascrockford/JSON-js). IE8 también tiene soporte nativo de la clase 'JSON' si la actualización [976662] (http://support.microsoft.com/kb/976662) está instalada.Te recomiendo que siempre incluyas json2.js para asegurarte de que funcione 'JSON.stringify'. – Oleg