jqGrid: botón personalizado en la barra de navegación agregado varias veces

He agregado un botón personalizado en mi barra de navegación:

function myFunc(){
$("#grid").jqGrid({ 
    datatype: 'json',
    url: 'arquivo.jsp',
    jsonReader: {repeatitems: false, root: 'root'},
    pager: '#paginado',
    rowNum: 10,
    autoencode: true,
    rowList: [10,20,30],        
    emptyrecords: "Não há registros.",
    recordtext: "Registros {0} - {1} de {2}",
    loadtext: "Carregando...",
    pgtext: "Página {0} de {1}",
    height: 250,
    width: 700,
    colNames:['Código','Nome', 'Ativo', 'Data Inclusão','Login','Senha','Confirma Senha','Email','Grupos'],
    colModel:[                                    
        {name:'codigo', width:80, sorttype:"int", editable: true, editrules: { edithidden: true }},
        {name:'nome', width:120, editable: true, editrules:{required:true}},
        {name:'ativo', width:80, gridview: true, editable: true, edittype:'select', editoptions:{value:{1:'Sim',2:'Não'}}, editrules:{required:true}},     
        {name:'dataInclusao', width:120, sorttype:"date", datefmt: 'd/M/Y', editable: true, editrules:{required:true, date:true}, editoptions: { dataInit: function(el) { setTimeout(function() { $(el).datepicker({ dateFormat: 'dd/mm/yy' }).val(); }, 200); }}},
        {name:'login', width:80, sortable:true, editable: true, editrules:{required:true}},  
        {name:'senha', width:80, sortable:true, editable: true, hidden:true, edittype:'password', editrules:{edithidden:true, required:true, custom:true, custom_func:validaSenha}},
        {name:'confirmaSenha', width:80, sortable:true, editable: true, hidden:true, edittype:'password', editrules:{edithidden:true, required:true}},
        {name:'email', width:150, sortable:true, editable: true, editrules:{required:true, email:true}} 
    ],
    multiselect: true,
    viewrecords: true,    
    editurl:"data?edit=true",
    caption: "Usuários"}
);              
$("#grid").jqGrid('navGrid','#paginado',{},
    {edit:true,url:"teste?acao=edit",closeAfterEdit:true,reloadAfterSubmit:true, 
        beforeShowForm: function(form) {                
            $('#tr_codigo', form).hide(); 
        }, 
        onClickSubmit: function(params, postdata) {
            validaSenha();
        }
    },
    {add:true,url:"teste?acao=teste",closeAfterAdd:true,reloadAfterSubmit:true, 
        beforeShowForm: function(form) { 
            $('#tr_codigo', form).hide(); 
        }, 
        onClickSubmit: function(params, postdata) {
            validaSenha();
        }
    },
    {del:true,reloadAfterSubmit:true, 
        onclickSubmit: function(url, postdata){
            url.url = 'teste?acao=del';
            return {codigo: $('#grid').getCell(postdata, 'codigo')};
        }
    },
    {search:true},
    {refresh:true}
).navButtonAdd('#paginado',{
    caption:"", 
    buttonicon:"ui-icon-suitcase", 
    onClickButton: function(){ 
        var dados = $("#grid").jqGrid('getGridParam','selrow');         
    }, 
    position:"last"
}); 

};

pero cada vez que hago clic en la página que muestra mi cuadrícula, se agrega un nuevo botón como se puede ver en esta imagen:

enter image description here

No sé si mi .jsp puede estar provocando este problema, pero definitivamente no puedo encontrar dónde está el problema. Espero que ustedes puedan ayudarme

Gracias por adelantado,

Lucas

preguntado el 03 de diciembre de 13 a las 13:12

Esto sucede cuando haces clic dondequiera en la página que contiene su cuadrícula? ¿O esto solo sucede al hacer clic en un lugar determinado? -

Sucede cada vez que actualizo la página, pero no sucede cuando actualizo haciendo clic en el botón en la barra de navegación. Parece que está sobrescribiendo mi cuadrícula, pero lo curioso es que la única parte que se agrega varias veces es el botón personalizado:

¿Puedes mostrar más de tu código? Solo quiero ver dónde usas el navButtonAdd función... Tal vez la ubicación es lo que está causando el problema. -

Edité con todo el código ahora -

Hmmm... Veo que tiene su configuración de cuadrícula envuelta en una función: myFunc()... Intente mover la configuración de la cuadrícula fuera de la función, para que esté sola. Además, donde llamas myFunc()? Estoy pensando que esto tiene algo que ver con esa función -

2 Respuestas

Resolví el problema usando $('#grid').jqGrid('GridUnload');

Respondido el 10 de diciembre de 13 a las 10:12

Hay otro hilo que habla del mismo tema. En la versión más nueva, la sintaxis cambió. Podría ayudar a alguien. Consulte aquí

$.jgrid.gridUnload("#jqGridId"); 

contestado el 23 de mayo de 17 a las 13:05

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