2011-08-31 85 views
2

我試圖打電話的jqGrid的setGridWidth功能,但我得到的錯誤:的jqGrid-setGridWidth功能

Object [object Object] has no method 'setGridWidth'

我敢肯定,這是愚蠢的東西。這是顯示網格的代碼(這很好),然後嘗試調整它的大小。

$("#jqGridElement").jqGrid({ 
     datastr: tableSrc, 
     jsonReader: { repeatitems: false }, 
     datatype: "jsonstring", 
     colNames: ['title', 'subtitle'], 
     colModel: [ 
      { name: 'title', index: 'title', width: 55 }, 
      { name: 'subtitle', index: 'subtitle'}], 
     height: 'auto', 

     gridview: true 
    }); 

    $("#jqGridElement").setGridWidth(600);' 

編輯

我也試過:

var gridObj = $("#jqGridElement").jqGrid({ datastr: tableSrc, ....... 
gridObj.setGridWidth(300); 

同樣的結果

回答

8

我想你設置$.jgrid.no_legacy_api = true;就像我在我的最後的演示一樣。

jqGrid的「標準」(傳統API)代碼設置了jQuery的許多方法擴展。在使用其他jQuery插件的情況下很危險。名稱衝突的可能性增加。所以建議使用「新風格」的jqGrid API。在setGridWidth方法的情況下,你應該使用

$("#jqGridElement").jqGrid('setGridWidth', 600); 

,而不是

$("#jqGridElement").setGridWidth(600); 

一小將軍的話:我建議你定義gridObj

var gridObj = $("#jqGridElement"); 
gridObj.jqGrid({ datastr: tableSrc,... 

,而不是

var gridObj = $("#jqGridElement").jqGrid({ datastr: tableSrc,... 

其優點是在調用$("#jqGridElement").jqGrid之前將設置值gridObj,並且您可以在任何jqGrid事件中使用安全gridObj。例如,您可以在loadComplete事件中使用gridObj變量。如果按照您現在使用的方式使用,gridObj變量在loadComplete事件的第一次使用時可能爲undefined

+0

你的假設是現貨。再次感謝。 –

+0

如果你想去一個帽子戲法:) http://stackoverflow.com/questions/7260786/jqgridreloading-data –

+0

我真的很喜歡你關於使用gridObj的建議。再次感謝。 –