2012-02-07 50 views
3

我使用jqGrid放置一些大樹。現在我想記住餅乾中的展開和摺疊節點jqGrid treeGrid捕獲展開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結果。

更新:Free jqGrid支持回調和事件,這使得expandNodecollapseNode不需要的上述覆蓋。它支持在擴展或摺疊節點或行之前或之後調用的附加回調。和treeGridBeforeExpandNodetreeGridAfterExpandNodetreeGridBeforeCollapseNodetreeGridAfterCollapseNodetreeGridBeforeExpandRowtreeGridAfterExpandRowtreeGridBeforeCollapseRowtreeGridAfterCollapseRow相應的jQuery的事件jqGridTreeGridBeforeExpandNodejqGridTreeGridAfterExpandNodejqGridTreeGridBeforeCollapseNodejqGridTreeGridAfterCollapseNodejqGridTreeGridBeforeExpandRowjqGridTreeGridAfterExpandRowjqGridTreeGridBeforeCollapseRowjqGridTreeGridAfterCollapseRow:回調的名稱。所有回調都有一個參數:options,它有兩個屬性:rowiditemitem是節點,它將展開/摺疊。

+0

謝謝,奧列格 – dr0zd 2012-02-08 08:47:11

+0

@ gv0zd:歡迎您!我將發佈的建議,引進'beforeExpandNode'和'boforeCollapseNode'如[在trirand論壇]的功能要求(http://www.trirand.com/blog/?page_id=393/feature-request/)。希望它會包含在下一個版本的jaGrid中。 – Oleg 2012-02-08 08:58:50

+0

謝謝你,奧列格你已經救了我一天 – 2012-07-25 07:36:57