<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.

    統(tǒng)計(jì)

    留言簿(10)

    BlogJava

    Blogs

    DIV+CSS

    JQuery相關(guān)

    友情鏈接

    常去的地方

    數(shù)據(jù)供應(yīng)

    閱讀排行榜

    評(píng)論排行榜

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

    背景:有一些時(shí)候我們處理的數(shù)據(jù)本身就是樹狀的結(jié)構(gòu),當(dāng)我們需要在從這些數(shù)據(jù)中做選擇的時(shí)候,希望出來的數(shù)據(jù)也是樹狀,以方便在邏輯上區(qū)分.
    實(shí)現(xiàn)方法:擴(kuò)展和樹相關(guān)的類,使得他們可以用于選擇.
    實(shí)現(xiàn)代碼:
    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: '根節(jié)點(diǎn)',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==''?'根節(jié)點(diǎn)':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 閱讀(5493) 評(píng)論(5)  編輯  收藏 所屬分類: JavaScript

    評(píng)論

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

    這種純累code的文章真的很難看下去啊  回復(fù)  更多評(píng)論   

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

    不用思考的文章,看了又有什么用呢?  回復(fù)  更多評(píng)論   

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

    現(xiàn)在ext真的有點(diǎn)走紅了
    最近看到不少產(chǎn)品中的web解決方案都用了ext  回復(fù)  更多評(píng)論   

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

    EXT在內(nèi)存方面比較薄弱,使用的內(nèi)存多,而且沒有一個(gè)好的釋放內(nèi)存機(jī)制!  回復(fù)  更多評(píng)論   

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

    ie下顯示不正常呀  回復(fù)  更多評(píng)論   

    主站蜘蛛池模板: 亚洲国产乱码最新视频| 亚洲天天做日日做天天看| 亚洲av无码片vr一区二区三区| 免费国产成人高清在线观看网站| 亚洲AV乱码一区二区三区林ゆな| 三年片免费高清版| 亚洲线精品一区二区三区| a级毛片无码免费真人久久| 亚洲日韩乱码中文无码蜜桃臀网站| 美女羞羞喷液视频免费| 婷婷亚洲天堂影院| av成人免费电影| 亚洲国产日韩在线视频| a级毛片毛片免费观看久潮喷| 日韩亚洲欧洲在线com91tv| 日韩精品人妻系列无码专区免费| 亚洲美女视频免费| 日韩吃奶摸下AA片免费观看 | 亚洲成AV人片在WWW色猫咪| 免费人成激情视频在线观看冫 | 在线精品亚洲一区二区三区| 免费一区二区无码东京热| 中文字幕在线观看亚洲| 我想看一级毛片免费的| 美女裸免费观看网站| 国产亚洲精品成人AA片新蒲金| 四虎影视在线影院在线观看免费视频| 亚洲日本中文字幕区| 国产成人免费爽爽爽视频| 色屁屁在线观看视频免费| 亚洲大片在线观看| 成人免费777777| 本免费AV无码专区一区| 亚洲美女一区二区三区| 国产免费观看黄AV片| 人妻免费一区二区三区最新| 亚洲Av高清一区二区三区| 国产福利免费在线观看| 很黄很污的网站免费| 亚洲精品中文字幕| 亚洲AV无码国产丝袜在线观看 |