extjs tree 添加復選框


 對 Ext.tree.TreeNodeUI 進行checkbox功能的擴展,后台返回的結點信息不用非要包含checked屬性   
   
 擴展的功能點有:   
 一、支持只對樹的葉子進行選擇   
     只有當返回的樹結點屬性leaf = true 時,結點才有checkbox可選   
     使用時,只需在聲明樹時,加上屬性 onlyLeafCheckable: true 既可,默認是false   
   
 二、支持對樹的單選   
     只允許選擇一個結點   
     使用時,只需在聲明樹時,加上屬性 checkModel: "single" 既可   
   
 二、支持對樹的級聯多選   
     當選擇結點時,自動選擇該結點下的所有子結點,以及該結點的所有父結點(根結點除外),特別是支持異步,當子結點還沒顯示時,會從后台取得子結點,然后將其選中/取消選中   
     使用時,只需在聲明樹時,加上屬性 checkModel: "cascade" 既可   
   
 三、添加"check"事件   
     該事件會在樹結點的checkbox發生改變時觸發   
     使用時,只需給樹注冊事件,如:   
     tree.on("check",function(node,checked){...});   
   
 默認情況下,checkModel為'multiple',也就是多選,onlyLeafCheckable為false,所有結點都可選   
   
 使用方法:在loader里加上 baseAttrs:{uiProvider:Ext.tree.TreeCheckNodeUI} 既可.   
 例如:   
    var tree = new Ext.tree.TreePanel({   
       el:'tree-ct',   
       width:568,   
       height:300,   
       checkModel: 'cascade',    //對樹的級聯多選   
       onlyLeafCheckable: false,//對樹所有結點都可選   
       animate: false,   
       rootVisible: false,   
       autoScroll:true,   
       loader: new Ext.tree.DWRTreeLoader({   
           dwrCall:Tmplt.getTmpltTree,   
           baseAttrs: { uiProvider: Ext.tree.TreeCheckNodeUI } //添加 uiProvider 屬性   
       }),   
       root: new Ext.tree.AsyncTreeNode({ id:'0' })   
   });   

   tree.on("check",function(node,checked){alert(node.text+" = "+checked)}); //注冊"check"事件

 

//添加監聽 實現復選框的級聯

tree.on('checkchange', function (node, checked) {

    node.expand();

    node.attributes.checked = checked;

    node.eachChild(function (child) {

        child.ui.toggleCheck(checked);

        child.attributes.checked = checked;

        child.fireEvent('checkchange', child, checked);

    });

}, fileListTree);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM