<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 閱讀(5493) 評論(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人片在线观看| 亚洲人成无码www久久久| 亚洲美女免费视频| 久久久99精品免费观看| 亚洲国产精品无码久久久蜜芽| 国产性生大片免费观看性| 中文国产成人精品久久亚洲精品AⅤ无码精品| 国产精品亚洲二区在线| 免费h黄肉动漫在线观看| 九九综合VA免费看| 亚洲国产三级在线观看| 久久国产色AV免费观看| 亚洲国产韩国一区二区| 在线免费观看一级毛片| 国产亚洲精彩视频| 国产精品V亚洲精品V日韩精品 | 自拍日韩亚洲一区在线| 亚洲免费综合色在线视频| 亚洲爆乳无码专区www| 亚洲成aⅴ人片久青草影院| 两性色午夜视频免费播放| 亚洲AV无码AV男人的天堂| 又黄又爽又成人免费视频| 亚洲AV成人片无码网站| 亚洲午夜福利精品无码| 免费无码VA一区二区三区| 久久精品国产亚洲AV忘忧草18| 国产资源免费观看| 人妻在线日韩免费视频| 久久亚洲国产成人影院| 亚洲男人的天堂在线va拉文| 一个人免费日韩不卡视频| 久久久久久亚洲精品影院| 中文字幕亚洲第一| 岛国av无码免费无禁网站| 窝窝影视午夜看片免费| 自怕偷自怕亚洲精品| 国产成人免费全部网站| 日韩av无码久久精品免费| 亚洲av无码一区二区三区天堂 | 日韩免费观看视频|