1
我不相信GridComplete事件在所有數據加載到網格中並且所有其他進程都完成後運行,如documentation中所述。使用Trirand的jqGrid進行gridComplete事件的時間
我有一個正確加載的網格。在gidComplete事件中,我觸發了一些過濾方法(.extend和.setGridParam),以在網格加載後立即應用過濾器。但是,儘管我的自定義函數正在觸發(通過控制檯看到),但未應用該過濾器。如果我使用setTimeout來延遲執行一秒鐘左右,那麼過濾器實際上就被應用了。所以在我看來,gridComplete發射得太早。順便提一下,過濾器函數(稱爲setGridFilter())也會在綁定到選擇菜單(用戶可以從預設過濾器選項中選擇)的onchange事件中觸發。這工作完美。只是這個函數的gridComplete調用失敗了。
$("#list3").jqGrid({
url: 'blah.php',
colNames: ['blah1','blah2','etc.','PresentationTemplateID'],
colModel: [name: 'blah1', index: 'blah1'],
[name: 'blah2', index: 'blah2'],
[name: 'etc.', index: 'etc.'],
[name: 'PresentationTemplateID', index: 'PresentationTemplateID', hidden:true]
viewRecords:true,
loadonce: true,
pager: '#pager3',
search:true,
gridComplete: function(){
//var t = setTimeout('setGridFilter()',1000); //this works, for some reason
setGridFilter(); //this does not
}
});
function setGridFilter() {
var postdata = $("#list3").jqGrid('getGridParam','postData');
var text = $("#ddlGridFilterMenu").val(), f;
$.extend(postdata,{filters:'',searchField: 'PresentationTemplateID', searchOper: 'eq', searchString: text});
$("#list3").jqGrid('setGridParam', { search: text.length>0, postData: postdata });
$("#list3").trigger("reloadGrid",[{page:1}]);
}
謝謝,@ graphicdivine - 我嘗試使用loadComplete,但它以相同的方式失敗。 – Octavient