<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java Blog for Alex Wan

    Let life be beautiful like summer flowers and death like autumn leaves.

    統計

    留言簿(10)

    BlogJava

    Blogs

    DIV+CSS

    JQuery相關

    友情鏈接

    常去的地方

    數據供應

    閱讀排行榜

    評論排行榜

    [Extjs]基于Ext2.0的樹狀選擇框(TreeComboBox)

    背景:有一些時候我們處理的數據本身就是樹狀的結構,當我們需要在從這些數據中做選擇的時候,希望出來的數據也是樹狀,以方便在邏輯上區分.
    實現方法:擴展和樹相關的類,使得他們可以用于選擇.
    實現代碼:
    Ext.ux.OptionTreeNode
    Ext.ux.OptionTreeNode=function(attributes)
    {
        
        Ext.ux.OptionTreeNode.superclass.constructor.call(
    this,attributes);
        
    this.value=attributes.value||'';
        
    this.proirity=attributes.proirity||'';
    }
    ;
    Ext.extend(Ext.ux.OptionTreeNode ,Ext.tree.TreeNode, 
    {
    }
    );

    Ext.ux.AsyncOptionTreeNode
    Ext.ux.AsyncOptionTreeNode=function(attributes)
    {
        
        Ext.ux.AsyncOptionTreeNode.superclass.constructor.call(
    this,attributes);
        
    this.value=attributes.value||'';
        
    this.proirity=attributes.proirity||'';
    }
    ;
    Ext.extend(Ext.ux.AsyncOptionTreeNode ,Ext.tree.AsyncTreeNode, 
    {
    }
    );

    Ext.ux.OptionTreeLoader
    Ext.ux.OptionTreeLoader = function(config) {
        Ext.ux.OptionTreeLoader.superclass.constructor.call(
    this, config);
    }
    ;

    Ext.extend(Ext.ux.OptionTreeLoader, Ext.tree.TreeLoader, 
    {
        createNode : 
    function(attr){
            Ext.apply(attr, 
    this.baseAttr || {});
            
    if(typeof attr.uiProvider == 'string'){
                attr.uiProvider 
    = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);
            }


            
    return(attr.leaf ?
                
    new Ext.ux.OptionTreeNode(attr) :
                    
    new Ext.ux.AsyncOptionTreeNode(attr));
        }

    }
    );

    Ext.ux.TreeComboBox
    Ext.ux.TreeComboBox=function(config)
    {
        
    var treeId=config.hiddenName + '-tree'+Ext.id();
        
    var treeConfig = Ext.apply({}{
                border:
    false,
                id:treeId
            }
    {
            loader: 
    new Ext.ux.OptionTreeLoader({dataUrl:'tree/optionNodes.html'}),
            border:
    false,
             root:
    new Ext.ux.AsyncOptionTreeNode({text: '根節點',id:'0',value:''})}

        );
        
    this.tree=new Ext.tree.TreePanel(treeConfig);
        
    //this.hiddenField=new Ext.form.Hidden({name:config.valueName});
        var _combobox=this;
        
    var _tree=this.tree;
        _tree.on('click',
    function(node){
            
    var record=_combobox.setValueAndText(node.value,node.text);
              _combobox.collapse();
              _combobox.fireEvent('select', _combobox, record, 
    0);
          }
    );
          
    this.onExpand=function()
          
    {
              _tree.render(treeId);
          }

        Ext.ux.TreeCombobox.superclass.constructor.call(
    this,Ext.apply(
    {
            hiddenName:config.hiddenName,
            
    //name:config.name,
            fieldLabel:config.fieldLabel,
            emptyText:config.emptyText,
            valueField:config.valueField
    ||'value',
            displayField:config.displayField
    ||'text',
            store:
    new Ext.data.SimpleStore({fields:[],data:[[]]}),
            editable:
    false,
            shadow:
    false,
            autoScroll:
    true,
            mode: 'local',
            triggerAction:'all',
            maxHeight: config.maxHeight
    ||200,
            tpl: '
    <tpl for="."><div style="height:'+config.maxHeight+'px"><div id="'+treeId+'"></div></div></tpl>',
            selectedClass:'',
            onSelect:Ext.emptyFn
    }
    ,config
    ));
    }
    ;
    Ext.extend(Ext.ux.TreeComboBox ,Ext.form.ComboBox, 
    {
        onRender : 
    function(ct, position){
            Ext.ux.TreeComboBox.superclass.onRender.apply(
    this, arguments);
            
    this.on("expand",this.onExpand,this);
            
    if(this.allowBlanl==false)
            
    this.setDefault();
        }
    ,
         setValue : 
    function(v){
            
    if(v)
            
    this. setValueAndText(v.code,v.name);
            
    else
            Ext.form.ComboBox.superclass.setValue.call(
    this, v);
        }
    ,
        setValueAndText : 
    function(v,t){
            
    //Ext.log(v+t);
            var text = v==''?'根節點':t;
            
    this.lastSelectionText = text;
            
    if(this.hiddenField){
                
    this.hiddenField.value = v;
            }

            Ext.form.ComboBox.superclass.setValue.call(
    this, text);
            
    this.value = v;
            
    var RecordType = Ext.data.Record.create([
                
    {name: this.valueField},
                
    {name: this.displayField}
            ]);
            
    var data={};
            data[
    this.valueField]=v;
            data[
    this.displayField]=t;
            
    var record = new RecordType(data);
            
    return record;
        }
    ,
        reset:
    function()
        
    {
            
    this.tree.getRootNode().collapse();
            Ext.ux.RegionField.superclass.reset.call(
    this);
        }

    }
    );


    例子:
        var treeComboBox=new Ext.ux.TreeComboBox({
            hiddenName:'treeComboBox',
            fieldLabel:'樹狀選擇框',
            maxHeight:
    250,
            treeWidth:
    200}
    );


    Let life be beautiful like summer flowers and death like autumn leaves.

    posted on 2008-08-11 09:14 Alexwan 閱讀(5504) 評論(5)  編輯  收藏 所屬分類: JavaScript

    評論

    # re: [Extjs]基于Ext2.0的樹狀選擇框(TreeComboBox) 2008-08-11 10:03 EricFan

    這種純累code的文章真的很難看下去啊  回復  更多評論   

    # re: [Extjs]基于Ext2.0的樹狀選擇框(TreeComboBox) 2008-08-11 10:30 萬洪泉

    不用思考的文章,看了又有什么用呢?  回復  更多評論   

    # re: [Extjs]基于Ext2.0的樹狀選擇框(TreeComboBox) 2008-08-11 10:42 zhuxing

    現在ext真的有點走紅了
    最近看到不少產品中的web解決方案都用了ext  回復  更多評論   

    # re: [Extjs]基于Ext2.0的樹狀選擇框(TreeComboBox) 2008-08-11 11:02 萬洪泉

    EXT在內存方面比較薄弱,使用的內存多,而且沒有一個好的釋放內存機制!  回復  更多評論   

    # re: [Extjs]基于Ext2.0的樹狀選擇框(TreeComboBox) 2009-03-31 15:45 extjs

    ie下顯示不正常呀  回復  更多評論   

    主站蜘蛛池模板: 久久福利青草精品资源站免费| 免费观看AV片在线播放| 亚洲中文字幕无码中文字在线 | 久久国产精品免费专区| 亚洲黄色在线观看视频| 午夜无遮挡羞羞漫画免费| 一道本在线免费视频| 久久精品亚洲一区二区三区浴池| 毛片免费观看网址| 一本大道一卡二大卡三卡免费| 亚洲熟妇自偷自拍另欧美| 亚洲乳大丰满中文字幕| 欧美在线看片A免费观看| v片免费在线观看| 久久精品亚洲综合一品| 嫩草影院在线免费观看| 国产精品成人免费福利| a级毛片免费高清视频| 青青青亚洲精品国产| 久久国产亚洲精品无码| 亚洲精品狼友在线播放| 午夜成人免费视频| 99在线在线视频免费视频观看| 激情小说亚洲图片| 亚洲AV无码专区亚洲AV桃| 亚洲美女精品视频| 亚洲人成电影在线天堂 | 黄色一级免费网站| 亚洲综合亚洲国产尤物| 国产精品亚洲玖玖玖在线观看| 国产成人精品一区二区三区免费| 二个人看的www免费视频| 亚洲码欧美码一区二区三区| 亚洲AV天天做在线观看| 亚洲VA综合VA国产产VA中| 免费阿v网站在线观看g| 丁香花免费完整高清观看 | 久久亚洲精品成人综合| 亚洲成av人在线视| 亚洲午夜爱爱香蕉片| 久久久精品国产亚洲成人满18免费网站|