jqGrid上的重复导航按钮

时间:2010-07-14 14:02:58

标签: jquery jqgrid

我在刷新网格时遇到问题,因为我在加载网格后添加了一些额外的按钮,但是当我尝试重新加载另一个按钮时添加了。

  $j(document).ready(function (){
     $j("#search").button().click(function() {
       var loadingImg = "../img/bpm_scripts/common/images/images";
        var ejecutive=$j("#ejecutiveId").val();
        buildTable(ejecutive);
     });
 });

function buildTable( ejecutive){
    $j("#list").jqGrid('setGridParam',
                       {postData:{ ejecutive:ejecutive}, search:true });
    $j("#list2").trigger("reloadGrid");
    $j("#list2").jqGrid({ 
        url: "<f:invokeUrl methodName='getInstances' var='sales'/>",
        datatype: "xml", 
        colNames:['Inv No','No','Creado','Actualizado','Estatus','Hotel'], 
        colModel:[ 
            {name:'invoiceId',index:'invoiceId', width:40},
            {name:'invoiceContracCustom',index:'invoiceContracCustom', width:50},
            {name:'invoiceCreatedBy',index:'invoiceCreatedBy', width:100},
            {name:'invoiceUpdatedBy',index:'invoiceUpdatedBy', width:100},
            {name:'invoiceStatus',index:'invoiceStatus', width:75,align:'center'},
            {name:'invoiceHotels',index:'invoiceHotels', width:75,align:'center'}
        ], 
        rowNum:10, 
        autowidth: true, 
        rowList:[10,20,30],
        pager: jQuery('#pager2'), 
        sortname: 'invoiceId', 
        viewrecords: true, 
        sortorder: "desc", 
        xmlReader: { 
            root: "results",    
            row: "invoice",
            repeatitems: false, 
            page: "page>currentpage",
            total: "page>pages", 
            records:"page>records",
            id: "invoiceId" 
        }, 
        caption:"XML Example" }).navGrid('#pager2',
            {edit:false,add:false,del:true},
            {height:280,reloadAfterSubmit:false}, // edit options 
            {height:280,reloadAfterSubmit:false}, // add options 
            {reloadAfterSubmit:false}, // del options 
            {}); // search options 
    });

然后调用它:

$j("#list2").jqGrid('navButtonAdd','#pager2', {
    caption:"",
    buttonicon:"ui-icon-check",
    position:"last",
    onClickButton:function(){ 
        var gsr = jQuery("#list2").jqGrid('getGridParam','selrow'); 
        if(gsr){
            $j.ajax({
                url: "url",
                type: 'GET',
                async: true,
                success: function() { alert('fine');  },
                error:function() { alert('Se ha producido un error'); } });
        }
        else 
            alert("Please select Row") ;
    } 
});

} 我不知道这部分应该在哪里,因为如果我之前没有加载任何按钮。

问候。

[1]:http://a.imageshack.us/img46/7697/repeatf.jpg图片

4 个答案:

答案 0 :(得分:2)

感谢您的建议。我按照你的提示添加了以下行,并且按钮重复消失。

$j("#list").jqGrid('GridUnload');

答案 1 :(得分:1)

在我看来,你应该重新排序一些功能

$j(document).ready(function (){
    // create jqGrid with additional button
    $j("#list2").jqGrid({ 
        url: "<f:invokeUrl methodName='getInstances' var='sales'/>",
        datatype: "xml", 
        // .... other jqGrid parameters
    }).jqGrid('navButtonAdd','#pager2', {
        // all navButtonAdd parameters
    });

    $j("#search").button().click(function() {
        var loadingImg = "../img/bpm_scripts/common/images/images";
        $j("#list").jqGrid('setGridParam',
                   {postData:{ ejecutive: $j("#ejecutiveId").val()}, search:true });
        $j("#list2").trigger("reloadGrid");
    });
});

此外,您可以在postData的定义中直接使用$j("#list2").jqGrid作为函数(请参阅How to filter the jqGrid data NOT using the built in search/filter box)。然后,您可以将代码更改为以下

$j(document).ready(function (){
    // create jqGrid with additional button
    $j("#list2").jqGrid({ 
        url: "<f:invokeUrl methodName='getInstances' var='sales'/>",
        postData: {
            ejecutive: function() { return $j("#ejecutiveId").val(); },
            search:true
        },
        datatype: "xml", 
        // .... other jqGrid parameters
    }).jqGrid('navButtonAdd','#pager2', {
        // all navButtonAdd parameters
    });

    $j("#search").button().click(function() {
        var loadingImg = "../img/bpm_scripts/common/images/images";
        $j("#list2").trigger("reloadGrid");
    });
});

如果需要,您可以在函数中包含更多逻辑,以计算ejecutive参数。重要的是要理解,在每次jqGrid刷新时,函数将在ajax调用之前立即调用。因此,您将始终使用“#ejecutiveId”的实际值。

答案 2 :(得分:0)

  1. $("#grid").jqGrid('GridUnload');
  2. $("#grid").jqGrid({ url: "");
  3. jQuery("#grid").jqGrid('setGridParam', { postData: { id: function () { return balanzaConfig.formDataParam.id; }, strDate: function () { return balanzaConfig.formDataParam.strDate; } } }).trigger('reloadGrid');

答案 3 :(得分:0)

虽然这是一个非常古老的问题,但仍然可以分享我的答案以防其他人遇到同样的问题。

我发现添加显式调用&#39; GridUnload&#39;功能是没有必要的。

如果您设置了&#39; id&#39;按钮,它不会复制导航栏上的按钮,这是一个例子:

$j("#list2").jqGrid('navButtonAdd','#pager2', {
    id: "btnId",
    .
    .
    .
    . rest of the code
});