Javascript jqGrid-导航栏中的自定义按钮添加了多次

Javascript jqGrid-导航栏中的自定义按钮添加了多次,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我在导航栏上添加了一个自定义按钮: function myFunc(){ $("#grid").jqGrid({ datatype: 'json', url: 'arquivo.jsp', jsonReader: {repeatitems: false, root: 'root'}, pager: '#paginado', rowNum: 10, autoencode: true, rowList: [10,20,30],

我在导航栏上添加了一个自定义按钮:

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

但每次我单击显示我的网格的页面时,都会添加一个新按钮,如下图所示:

我不知道我的.jsp是否会导致这个问题,但我肯定找不到问题所在。希望你们能帮助我

提前感谢,


Lucas。

我使用$('#grid').jqGrid('GridUnload')解决了这个问题

还有另一个线程讨论相同的问题。在较新的版本中,语法发生了更改。可能会帮助别人。请参阅


当您单击包含网格的页面上的任意位置时会发生这种情况?或者,这只发生在单击某个点时?每次刷新页面时都会发生,但单击导航栏上的按钮刷新页面时不会发生。看起来它覆盖了我的网格,但有趣的是,唯一被多次添加的部分是自定义按钮。你能显示更多的代码吗?我只是想看看您在哪里使用
navbuttonad
功能。。。可能是位置问题造成的。我现在用整个代码编辑了。。我看到您的网格设置包装在一个函数中:
myFunc()
。。。尝试将网格设置移出函数,使其独立运行。另外,在哪里调用
myFunc()
?我想这和功能有关
$.jgrid.gridUnload("#jqGridId");