<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不卡| 午夜福利不卡片在线播放免费| 日本在线看片免费| a级午夜毛片免费一区二区| 成人免费乱码大片A毛片| 一区视频免费观看| 一级毛片免费在线观看网站| 一区二区三区免费视频播放器 | 日韩视频在线免费| 天天操夜夜操免费视频| 在线播放免费人成视频在线观看| 久久不见久久见免费影院| 成年人在线免费观看| 日韩a级毛片免费观看| 国产小视频在线观看免费| 免费中文字幕一级毛片| 亚洲无码高清在线观看| 中文字幕亚洲电影| 亚洲va久久久噜噜噜久久天堂 | 成年在线观看网站免费| 99re热免费精品视频观看 | 五月天婷婷免费视频| 中文字幕在线免费播放| 色欲A∨无码蜜臀AV免费播| 日本黄网站动漫视频免费| 免费无遮挡无码视频网站| 亚洲Av无码乱码在线znlu| 亚洲香蕉成人AV网站在线观看| 久久香蕉国产线看观看亚洲片| 亚洲熟妇av一区| 亚洲欧美日韩中文字幕在线一区| 亚洲丰满熟女一区二区哦| www一区二区www免费| 日本视频在线观看永久免费| 日本zzzzwww大片免费| 国产公开免费人成视频| 亚洲人成网77777色在线播放| 久久精品国产亚洲AV嫖农村妇女 | 中文亚洲成a人片在线观看| 亚洲国产综合专区电影在线|