崩壊またはツリーノードの拡大をキャッチするためにあなたを助けることができるjqGridにはイベントまたはコールバックは現在ありません。
一般に、投稿したコードは正しいテストを行います。それにもかかわらず、あなた自身はソリューションによって完全に満たされていません。私はそれもあまり良くないと思う。私が見ている最も大きな問題は、どのアイコンにボタンがあるかをテストすることですが、アイコンはグリッド内の同じイベントの元のハンドラによって変更されます。バインディングの順序は非常に重要です。あなたの場所に
は、私は何のイベントが存在しない場合、このような場合にサブクラス化技術を使用することを好みます。それは非常に簡単ですが、100%有効です。
ツリーグリッドは、文書化された方法expandNodeとcollapseNodeを持っています。このメソッドはノードアイコンをクリックするとjqGridによって内部的に呼び出されます。 expandNode
メソッドは、拡張ツリーを表示するためにreloadGrid
を呼び出します。
だから私は、ツリーのグリッドを作成した後に次のコードを追加することをお勧め:
var orgExpandNode = $.fn.jqGrid.expandNode,
orgCollapseNode = $.fn.jqGrid.collapseNode;
$.jgrid.extend({
expandNode: function (rc) {
alert('before expandNode: rowid="' + rc._id_ + '", name="' + rc.name + '"');
return orgExpandNode.call(this, rc);
},
collapseNode: function (rc) {
alert('before collapseNode: rowid="' + rc._id_ + '", name="' + rc.name + '"');
return orgCollapseNode.call(this, rc);
}
});
あなたはthe demo上で結果を見ることができます。 UPDATED
:Free jqGridはexpandNode
とcollapseNode
不要の上記の上書きを行っている、コールバックやイベントをサポートしています。ノードまたは行の展開または折りたたみの前または後に呼び出された、すでに追加のコールバックをサポートしています。コールバックの名前:treeGridBeforeExpandNode
、treeGridAfterExpandNode
、treeGridBeforeCollapseNode
、treeGridAfterCollapseNode
、treeGridBeforeExpandRow
、treeGridAfterExpandRow
、treeGridBeforeCollapseRow
、treeGridAfterCollapseRow
と対応するjQueryのイベントjqGridTreeGridBeforeExpandNode
、jqGridTreeGridAfterExpandNode
、jqGridTreeGridBeforeCollapseNode
、jqGridTreeGridAfterCollapseNode
、jqGridTreeGridBeforeExpandRow
、jqGridTreeGridAfterExpandRow
、jqGridTreeGridBeforeCollapseRow
、jqGridTreeGridAfterCollapseRow
。すべてのコールバックには、options
という1つのパラメータがあり、2つのプロパティ:rowid
とitem
があります。 item
はノードで、展開/折りたたみが行われます。
gv0zd @オレグ – dr0zd
、ありがとう:あなたは歓迎されています! [the trirand forum](http://www.trirand.com/blog/?page_id=393/feature-request/)の機能リクエストとして 'beforeExpandNode'と' boforeCollapseNode'を紹介する提案を投稿します。うまくいけば、それはjaGridの次のリリースに含まれることを望みます。 – Oleg
ありがとう、オレグあなたは私の一日を救った –