2013-10-15 55 views
1

我在我的项目上使用jqGrid,我有一个问题,即使在阅读同一主题上的论坛后,仍然无法解决问题。JqGrid无法在点击按钮后重新加载

我会重新加载网格,当用户点击一个按钮后选择一个日期。我希望数据充值对象选择日期。

我使用下面的代码:

var loadfacture = false; 

    $('#btn-facture').click(function(){  

     if(!loadfacture){   

      $("#factures").jqGrid({ 
       url:'loadfactureencours.json', 
       datatype: "json",   
       autowidth: true, 
       height:250, 
       colNames:['#','Numero','Date', 'Client','Serveur','Prix Total','Avance','Regler','Notes'], 
       colModel:[ 
        {name:'idfac',index:'idfac', width:45,align:"center"}, 
        {name:'numfac',index:'numfac', width:80,align:"center"}, 
        {name:'datefac',index:'datefac', width:150,align:"center"}, 
        {name:'client',index:'client', width:145,align:"center"}, 
        {name:'utilisateur',index:'utilisateur', width:125,align:"center"},      
        {name:'montant',index:'montant', width:70,align:"center"}, 
        {name:'avance',index:'avance', width:60,align:"center"}, 
        {name:'regler',index:'regler', width:50,align:"center"}, 
        {name:'description',index:'description', width:150, sortable:false} 
       ], 
       rowNum:10, 
       rowTotal: 2000, 
       rowList : [10,20,30,40,50,60], 
       loadonce:true, 
       mtype: "GET", 
       postData: { 
        day: function() {      
         return $('#daySelect').val(); 
        } 
       }, 
       rownumbers: false, 
       rownumWidth: 40, 
       gridview: true, 
       pager: '#paging', 
       sortname: 'idfac', 
       viewrecords: true, 
       sortorder: "desc", 
       caption: "", 
       ondblClickRow: function(rowid,iRow,iCol,e){ 
        var rowData = jQuery(this).getRowData(rowid); 
        console.log(rowData); 
        window.location = "ecrancommandebar.html?num="+rowData.numfac; 
       } 
      }); 

      $("#factures").jqGrid('navGrid','#paging',{del:false,add:false,edit:false}); 
      loadfacture = true; 


     }else{   

      var grid = $("#factures"); 
        grid.trigger("reloadGrid",[{current:true}]); 

     } 

    }); 

我通过阅读关于同一主题的论坛,但在电网负荷首次再建这段代码,当我点击按钮更改日期后一无所获发生。

你怎么了?感谢您的反馈意见。

回答

4

您使用loadonce:true选项,来自服务器的数据的第一加载后改变datatype从最初"json""local"。它允许支持本地数据的排序,分页和过滤。所以你应该明白grid.trigger("reloadGrid",[{current:true}]);将刚刚从先前保存的先前响应重新加载数据。因此,除非将datatype参数的值重置为"json",否则不会从服务器重新加载。换句话说,你应该重写else部分大约以下内容

... 
} else {   
    $("#factures").jqGrid("setGridParam", {datatype: "json"}) 
     .trigger("reloadGrid", [{current: true, page: 1}]); 
} 
0

你可以用这个尝试:

}else{   
    var grid = $("#factures"); 
    $.ajax({ 
     url: "loadfactureencours.json", 
     dataType: "json", 
     success: function(data){ 
      grid.trigger("reloadGrid",[{current:true}]); 
     }, 
     error: function(){} 
    }); 

} 
相关问题