2011-09-23 31 views
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}]); 
} 
+0

謝謝,@ graphicdivine - 我嘗試使用loadComplete,但它以相同的方式失敗。 – Octavient

回答