2011-10-18 19 views
2

サブグリッドを使用するグリッド(バージョン4.1.1)があります。私はloadonceを使用しています:trueとscroll:1.グリッドが最初にロードされたら、問題なしでまでまでサブグリッドを開くことができます。その後、サブグリッドは開いたり閉じたりしません。私がプラスアイコンをクリックすると、 "Loading ..."が表示されますが、何も起こりません。私は以前に開いたサブグリッドを閉じることさえできません。私はあなたが役立つことを願っ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.min.jsの代わりにjquery.jqGrid.src.jsを使用し、デバッガでページを開始することをお勧めします。たとえば、Internet Explorerの開発者ツールを使用することができます。これを行うには、F12を押して開発者ツールを起動し、「スクリプト」を選択し、「デバッグを開始」ボタンをクリックする必要があります。エラーが発生するとページが停止するか、右ペインの「Colsole」に追加情報が表示されます。

データ処理が複雑で、既知のバグや問題があるため、私は個人的にscroll: 1オプションを使用しません。互換性のないパラメーターの組み合わせを使用しているようです。 loadonce: trueまたはscroll: 1のいずれかのパラメータを削除することをお勧めします。

+0

「ロード中...」は、サーバー要求が行われているときに常に表示されるロードテキストです。私はスクロールをオフにした:それは動作しますが、今私はグリッド上でページングを使用する必要があります。以前はグリッド上で1つのスクロールを使用していましたが、これは問題なく動作しましたが、サブグリッドを使用するのは初めてです。 今のところ私はタイトなタイムラインがあるので、私はページングを使用します。私は少し後でデバッグしようとします。 ありがとうございます。 –

+0

@David Davis:ようこそ!問題は、 "Loading ..."が応答処理の最後*に隠れてしまうことです。したがって、エラーまたは例外が発生した場合は、「読み込み中...」が引き続き表示されます。デバッグ中に例外が発生する正確な場所を見つけることができます。 – Oleg

3

同様の問題が発生しています。 jqgridのaddSubGrid関数は、クリックイベントを追加して、サブグリッドをテーブルのすべての行(ちょうどロードされた行だけでなく)に切り替えるように見えます。

これは、新しい行が正常に動作するようにしていましたが、最初のセットは急速に展開されてから折りたたまれました(2つのクリックハンドラ)。別のデータセットがロードされると、最初の行セットはうまく機能しました(しかし、それらは展開、折りたたみ、および展開されます)が、もう2番目のセットは機能しなくなりました。

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を大量に設定することでした。

関連する問題