jqGridのバグのようです。私はコードを見て、私は問題を理解していると思う。
ユーザが「展開」アイコンthe codeをクリックするたびに、expandRow
とexpandNode
メソッドを呼び出す実行されます。 expandNode
のコードは、最初に、新しいデータが追加される行を識別するために内部的に使用されるjqGridのtreeANode
パラメータの現在の値を上書きします。次に、サーバーへの新しい要求の,parentid
(またはおよびn_right
、'nested'
グリッドモデルの場合)およびn_level
パラメーターが設定され、その後にreloadGrid
がトリガーされます。
問題は、が後、内部populate
方法の開始時reloadGrid
の処理中に、内部.grid.hDiv.loading
性がテストされることであり、それは、次いで、前依然としてペンディング要求秒リロードすることが設定された場合のグリッドはスキップされます。問題は、treeANode
パラメータの値が既に変更されていることです。したがって、最初にノードを出すノードの子として返されたアイテムは、最後にクリックされたノードのノードとして追加されます。私は別の保留中の要求がまだ処理されている場合treeANode
パラメータが第二のクリックによって上書きされないことになるように、次の
} else if (!this.grid.hDiv.loading) {
にコードのthe lineを変更することをお勧めバグフィックスとして
。
hereからjquery.jqGrid.src.js
の修正版をダウンロードし、バグ修正後に問題が解決するかどうかをテストできます。問題が解決する場合は、対応するバグレポートを投稿して、the trirand forumに問題を解決する方法を提案します。
もう1つの回避策として、loadui: 'block'
jqGridのオプションを使用できます。このオプションは、サーバーに対する保留中の要求の処理中にユーザーの操作を許可しません。
[demo](http://www.trirand.com/blog/jqgrid/jqgrid.html)の「バージョン3.3 - >ツリーグリッドの新機能」のデモでも同じ問題があります。これはjqgridのバグですか? – mdprasadeng