2012-02-07 10 views
3

jqGridを使用して大きなツリーを取得します。今、私はクッキーjqGrid treeGrid catch expand collapsイベント

に展開し、ノードを崩壊覚えておきたいので、私は拡大し、イベントをcollapsキャッチしたいです。私は、だから私は誰もが別の方法を提案してもらえ、このように

grid.find("div.treeclick").bind("click",function(e){ 
    classes = $(this).attr('class'); 
    //returns: 
    //ui-icon treeclick ui-icon-triangle-1-s tree-minus 
    //ui-icon treeclick ui-icon-triangle-1-e tree-plus 
    if(classes.indexOf('-minus') != -1) 
     alert ('Expand!'); 
    else if(classes.indexOf('-plus') != -1) 
     alert ('Collaps!') 
}); 

それを解決したマニュアル

でそれを見つけることができませんでしたか?

答えて

9

崩壊またはツリーノードの拡大をキャッチするためにあなたを助けることができるjqGridにはイベントまたはコールバックは現在ありません。

一般に、投稿したコードは正しいテストを行います。それにもかかわらず、あなた自身はソリューションによって完全に満たされていません。私はそれもあまり良くないと思う。私が見ている最も大きな問題は、どのアイコンにボタンがあるかをテストすることですが、アイコンはグリッド内の同じイベントの元のハンドラによって変更されます。バインディングの順序は非常に重要です。あなたの場所に

は、私は何のイベントが存在しない場合、このような場合にサブクラス化技術を使用することを好みます。それは非常に簡単ですが、100%有効です。

ツリーグリッドは、文書化された方法expandNodecollapseNodeを持っています。このメソッドはノードアイコンをクリックすると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 jqGridexpandNodecollapseNode不要の​​上記の上書きを行っている、コールバックやイベントをサポートしています。ノードまたは行の展開または折りたたみの前または後に呼び出された、すでに追加のコールバックをサポートしています。コールバックの名前:treeGridBeforeExpandNodetreeGridAfterExpandNodetreeGridBeforeCollapseNodetreeGridAfterCollapseNodetreeGridBeforeExpandRowtreeGridAfterExpandRowtreeGridBeforeCollapseRowtreeGridAfterCollapseRowと対応するjQueryのイベントjqGridTreeGridBeforeExpandNodejqGridTreeGridAfterExpandNodejqGridTreeGridBeforeCollapseNodejqGridTreeGridAfterCollapseNodejqGridTreeGridBeforeExpandRowjqGridTreeGridAfterExpandRowjqGridTreeGridBeforeCollapseRowjqGridTreeGridAfterCollapseRow。すべてのコールバックには、optionsという1つのパラメータがあり、2つのプロパティ:rowiditemがあります。 itemはノードで、展開/折りたたみが行われます。

+0

gv0zd @オレグ – dr0zd

+0

、ありがとう:あなたは歓迎されています! [the trirand forum](http://www.trirand.com/blog/?page_id=393/feature-request/)の機能リクエストとして 'beforeExpandNode'と' boforeCollapseNode'を紹介する提案を投稿します。うまくいけば、それはjaGridの次のリリースに含まれることを望みます。 – Oleg

+0

ありがとう、オレグあなたは私の一日を救った –

関連する問題