我在项目中使用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}]);
}
});
我通过阅读相同主题的论坛来构建这段代码,但第一次加载网格然后在更改日期后点击按钮没有任何反应。
你有什么问题?感谢您的反馈。
答案 0 :(得分: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}]);
}
答案 1 :(得分:0)
你可以试试这个:
}else{
var grid = $("#factures");
$.ajax({
url: "loadfactureencours.json",
dataType: "json",
success: function(data){
grid.trigger("reloadGrid",[{current:true}]);
},
error: function(){}
});
}