2011-10-18 64 views
2

我有一個使用子網格的網格(版本4.1.1)。我正在使用loadonce:true和scroll:1.當網格第一次加載時,我可以打開沒有問題的子網格,直到我將主網格向下滾動到加載更多數據的點。之後,沒有子網格會打開或關閉。如果我點擊加號圖標,我會看到「正在加載...」,但沒有任何反應。我甚至無法關閉先前打開的子網格。jqGrid subGrid在滾動後停止打開

這裏是我的網格定義:

$("#grid_sites").jqGrid({ 
url:'getgridxmlsites.php', 
     postData: {detailid: function() {return $('#hdnDetailId').val(); }}, 
datatype: 'xml', 
height: 260, 
width: 832, 
shrinkToFit: false, 
caption:'', 
colNames :['studydetailid', 'Site', 'Name', 'Status', 'Location'], 
colModel :[ 
    {name:'detailid',  index:'detailid', width:0, hidden: true }, 
    {name:'sitenumber', index:'sitenumber', width:60, align:'right'}, 
    {name:'name',   index:'name',  width:230}, 
    {name:'status',  index:'status',  width:110, align:'center'}, 
     {name:'location',  index:'location', width:74} 
     ], 
pager:'pager_sites', 
scroll: 1, 
viewrecords:true, 
sortable:true, 
sortname: 'sitenumber', 
autowidth: true, 
pgbuttons: false, 
loadonce: true, 
//  gridview: true, // Cannot be used when using subGrid. 
onSelectRow: function(id){ gridRowSelect(id) }, 
subGrid: true, 
subGridUrl: 'getgridxmldatabysite.php', 
subgridtype: 'xml', 
subGridModel: [{ 
     name: ['Owner', 'Phone', 'Status'], 
     width: [120, 100, 100], 
     align: ['left', 'left', 'left'], 
     params: ['detailid'] 
    }], 
    subGridOptions: { reloadOnExpand : false } 
}); 

我希望你能有所幫助。

回答

0

典型的"Loading..."意味着處理服務器響應時出錯。我建議您使用jquery.jqGrid.src.js而不是jquery.jqGrid.min.js並在調試器中啓動您的頁面。例如,您可以使用Internet Explorer的開發工具。要做到這一點,你應該按F12啓動開發工具,然後選擇「腳本」,然後點擊「開始調試」按鈕。頁面將被錯誤停止,或者您將在右窗格的「Colsole」中看到一些附加信息。

我個人沒有使用scroll: 1選項,因爲數據處理的複雜性和不同的已知錯誤或問題。在我看來,你使用不兼容的參數組合。我建議您刪除loadonce: truescroll: 1參數。

+0

「正在加載...」是每當發出服務器請求時總是出現的加載文本。我把滾動:1關閉,它的工作原理,但現在我不得不在網格上使用分頁。我們一直在網格上使用scroll:1,沒有問題,並且非常喜歡它的行爲,但這是我們第一次使用子網格。 現在,由於時間緊迫,我將使用分頁。我稍後會嘗試調試一下。 謝謝。 –

+0

@戴維·戴維斯:不客氣!問題在於,「加載...」將在響應處理的末尾隱藏*。因此,如果發生錯誤或異常,仍然可以看到「加載...」。調試過程中發現異常的確切位置。 – Oleg

3

我遇到了類似的問題。它看起來像jqgrid中的addSubGrid函數添加了一個click事件來將子網格切換到表格中的每一行(而不僅僅是剛加載的那一行)。

這導致新行的行爲良好,但第一組快速擴展,然後崩潰(兩個點擊處理程序)。當另一組數據加載時,第一組行可以正常工作(儘管它們會展開,摺疊並再次展開),但第二組行不再起作用。

當試圖弄清楚我是否缺少JSON中的某些行元數據時,我在addJSON和addSubGrid的組合中遇到了一些問題。現在我只是修改了行:

$(ts.rows[i].cells[pos]).bind('click', function(e) { 

到:

$(ts.rows[i].cells[pos]).unbind('click'); 
$(ts.rows[i].cells[pos]).bind('click', function(e) { 

,一切似乎按預期方式工作。這是jqGrid的4.2.0版本。我仍然不確定這是一個錯誤,配置問題還是數據問題,但至少我再次工作。

+0

改變這條線爲我工作。我正在使用本地數據。 – helios456

+0

這似乎仍然發生在jqgrid 4.6.0 – Asagohan

0

在您的配置中,您不設置rowNum。所以我相信jqgrid會使用20的默認rowNum。這會導致由於Robert Simmons提到的點擊綁定問題導致的滾動問題。

另一種解決此問題而不必更改jqgrid代碼的方法是將rowNum設置爲-1。這隻會得到所有行,這應該很好,因爲您使用的是本地數據。但是,此修補程序在以前的版本中可能無法運行到4.6.0。 (有關將rowNum設置爲-1的更多信息,請參見How to show all rows in the jqGrid?)。在4.6.0之前的版本中,我認爲主要的解決方案是將rowNum設置爲大數。