cómo personalizar la búsqueda usando jqgrid + Struts2 jquery pluggin + plantilla Freemarker

Estoy ejecutando una aplicación web usando Hibernate + Struts2 + Struts2-jquery (jqgrid) + freemarker. Estoy tratando de crear un jqgrid (JSON) para presentar algunos resultados al usuario y permitir un filtrado complejo de los datos mediante la búsqueda múltiple. Tengo la funcionalidad estándar funcionando bien. Este es mi ftl:

<div id="mygridfilter">
    <@sj.submit id="grid_edit_searchbutton" value="Search" onClickTopics="searchgrid" button="true"/>
    <@sj.submit id="grid_edit_colsbutton" value="Show/Hide Columns" onClickTopics="showcolumns" button="true"/>
    <@sj.submit id="grid_reload_button" onClickTopics="reloadItems" value="Reload" button="true"/>


    </div>
<hr />
<@sjg.grid
        id="gridedittable"
        caption="Glycobase Users"
        dataType="json"
        href="json_table.action"
        pager="true"
        navigator="true"
        navigatorSearchOptions="{multipleSearch:true,
                        sopt:['cn'],
                        reloadAfterSubmit:true,
                        }"
        gridModel="gridModel"
        reloadTopics="reloadItems"
        rowList="10,15,20"
        rowNum="15"
        rownumbers="true"
        sortname="userName"
        sortorder="asc"
        navigatorAdd="false"
        navigatorEdit="false"
        navigatorDelete="false"
        navigatorView="true"
        width="800"
        prmNames=""
        resizable="true"
        altRows="true"
    navigatorExtraButtons="{
            seperator: { 
                title : 'seperator'  
            }, 
            hide : { 
                title : 'Show/Hide', 
                icon: 'ui-icon-wrench', 
                topic: 'showcolumns'
            },
            alert : { 
                title : 'Alert', 
                onclick: function(){ alert('Grid Button clicked!') }
            }
        }"
        shrinkToFit="true"
    >

    <@sjg.gridColumn name="userName" index="contributorName" title="Contributor Name" sortable="true"/>
    <@sjg.gridColumn name="email" index="email" title="Email" sortable="true"/>
    <@sjg.gridColumn name="fullName" index="fullName" title="Full Name" sortable="true"/>


    </@sjg.grid>
    <script>

y algo de javascript en la parte superior:

<script>
    $.subscribe('showcolumns', function(event,data) {
        $.struts2_jquery.require("js/plugins/grid.setcolumns.js");
            $("#gridedittable").jqGrid('setColumns',{});
    });

    $.subscribe('searchgrid', function(event,data) {
            $("#gridedittable").jqGrid('searchGrid', {
                        multipleSearch:true,
                        sopt:['cn'],
                        reloadAfterSubmit:true
                        }
                        );
        });



</script>

Este es el comportamiento actual: cuando hago clic en el icono de búsqueda (o en el botón de búsqueda), una ventana de diálogo permite realizar búsquedas múltiples en los campos de las columnas con algún operador (es decir, "nombre" "contiene" "..."). Lo que necesito es incluir en la búsqueda alguna consulta adicional para refinar aún más mi consulta en el lado del servidor... es decir, necesito un criterio de búsqueda adicional "longitud del nombre" "mayor" "...". 1) ¿Puedo agregar un criterio a la lista desplegable de búsqueda sin tener la columna relativa? 2) ¿Cómo puedo agregar a JSON.filters enviados al servidor la consulta? es decir

filters: "{"groupOp":"AND","rules":[{"field":"nameLength","op":"gt","data":"4"}]}"

En el lado del servidor, entonces tendría setter y getter para nameLenght, y realizaría la consulta de criterios de hibernación en consecuencia para devolver las filas correctas al gridModel.

¿Alguna ayuda?

Muchas Gracias

preguntado el 03 de mayo de 12 a las 14:05

resolvió este problema usando la propiedad formIds: formIds="formId". Forme elementos y valores y luego pase a la acción ajax como propiedades adicionales (es decir, puede tener setters y getters en su clase). Tenga en cuenta que los elementos y valores del formulario no forman parte del atributo json de 'filtros' predeterminado. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.