coolite ComboxTree

用coolite开发的项目,也需要用到comboTree,千辛万苦,终于和老外要到了代码。

JS

 1 Ext.namespace('Ext.ux' );
 2 /**** @class ComboTree* @extends Ext.form.ComboBox*/
 3 Ext.ux.ComboTree =  Ext.extend(Ext.form.ComboBox, {
 4     extStore: null ,
 5     tree: null ,
 6     treeId: 0 ,
 7     setValue: function  (v) {
 8         var text =  v;
 9         if (this .valueField) {
10             var r = this.findExtRecord(this .valueField, v);
11             if  (r) {
12                 text = r.data[this .displayField];
13             } else if (this.valueNotFoundText !==  undefined) {
14                 text = this .valueNotFoundText;
15              }
16          }
17         Ext.ux.ComboTree.superclass.setValue.call(this , text);
18         this.lastSelectionText =  text;
19         if (this .hiddenField) {
20             this.hiddenField.value =  v;
21          }
22         this.value =  v;
23      },
24     initComponent: function  () {
25         this.treeId =  Ext.id();
26         this.focusLinkId =  Ext.id();
27         Ext.apply(this , {
28             store: new  Ext.data.SimpleStore({
29                  fields: [],
30                  data: [[]]
31              }),
32             editable: false ,
33             shadow: false ,
34             mode: 'local' ,
35             triggerAction: 'all' ,
36             maxHeight: 200 ,
37             tpl: '<tpl for="."><div style="height:200px"><div id="' + this.treeId + '"></div></div></tpl>' ,
38             selectedClass: '' ,
39              onSelect: Ext.emptyFn,
40             valueField: 'id'
41          });
42         this.tree = new Coolite.Ext.TreePanel(this .tree);
43         this.on('expand'this .onExpand);
44         this.tree.on('click'this.onClick, this );
45         Ext.ux.ComboTree.superclass.initComponent.apply(this , arguments);
46      },
47     findExtRecord: function  (prop, value) {
48         var  record;
49         if (this.extStore != null ) {
50             if (this.extStore.getCount() > 0 ) {
51                 this.extStore.each(function  (r) {
52                     if (r.data[prop] ==  value) {
53                         record =  r;
54                         return false ;
55                      }
56                  });
57              }
58          }
59         return  record;
60      },
61     onClick: function  (node) {
62         if (node.attributes.parameter == 9) { //         } else {            //             this.setValue(node.text);            this.hiddenField.value = node.id;            this.collapse();        }    },    onExpand: function() {        this.tree.render(this.treeId);    }});Ext.reg("combotree", Ext.ux.ComboTree);
63             

 

 

ComboTree.cs

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Web.UI;
using Coolite.Ext.Web;

[assembly: WebResource("Coolite.Ext.UX.Extensions.ComboTree.resources.ComboTree.js", "text/javascript")]

namespace Coolite.Ext.UX
{
    [Designer(typeof(EmptyDesigner))]
    [DefaultProperty("")]
    [Xtype("combotree")]
    [InstanceOf(ClassName = "Ext.ux.ComboTree")]
    [ClientScript(Type = typeof(ComboTree), WebResource = "Coolite.Ext.UX.Extensions.ComboTree.resources.ComboTree.js", FilePath = "ux/extensions/combotree/combotree.js")]
    [ToolboxData("<{0}:ComboTree runat=\"server\" Title=\"Combo tree\" Height=\"300\"></{0}:ComboTree>")]
    [Description("Combobox with tree functionality")]
    public class ComboTree : ComboBox
    {
        private ItemsCollection<TreePanel> tree;

        [ClientConfig("tree", typeof(ItemCollectionJsonConverter))]
        [Category("Config Options")]
        [NotifyParentProperty(true)]
        [DefaultValue(null)]
        [PersistenceMode(PersistenceMode.InnerProperty)]
        public virtual ItemsCollection<TreePanel> Tree
        {
            get
            {
                if (this.tree == null)
                {
                    this.tree = new ItemsCollection<TreePanel>();
                }

                return this.tree;
            }
        }

        protected override void OnLoad(EventArgs e)
        {
            this.Controls.Add(Tree[0]);

            if (!this.LazyItems.Contains(Tree[0]))
            {
                this.LazyItems.Add(Tree[0]);
            }

            base.OnLoad(e);
        }
    }
}

 

转载于:https://www.cnblogs.com/AndySong/archive/2009/10/31/1593625.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值