现在的位置: 首页 > 综合 > 正文

DropDownTreeList

2011年10月27日 ⁄ 综合 ⁄ 共 4628字 ⁄ 字号 评论关闭
asp.net本身就给我们提供了很多控件,而且不少控件开发公司也为我们提供了丰富漂亮的控件;但仍然不能满足我这样的懒人在实际项目中的需要,所以就需要学会自己来开发控件。因为我不想重复工作,所以要创建它,我自己是很喜欢控件开发,只不过目前还是一个小菜。
    前些时间在园子里看到有位朋友写也了一个DropDownTreeList控件,说实话写的很是不错。今天也贴出我在项目中写的DropDownTreeList控件,以此来和园子里喜欢控件开发的朋友共同进步。
    是不是有朋友在说:“少废话了,代码贴出来看看先”。好,那就贴出代码先:
  1/// <summary>
  2    /// 下拉树形框控件。
  3    /// </summary>

  4    [DefaultProperty("Text"), ToolboxData("<{0}:DropDownTreeList runat=server></{0}:DropDownTreeList>")]
  5    public class DropDownTreeList : WebControl, IPostBackDataHandler, IPostBackEventHandler
  6    {
  7
  8        /// <summary>
  9        /// 下拉列表框控件变量
 10        /// </summary>

 11        public System.Web.UI.WebControls.DropDownList TypeID = new System.Web.UI.WebControls.DropDownList();
 12
 13        
 14        /// <summary>
 15        /// 构造函数
 16        /// </summary>

 17        public DropDownTreeList(): base()
 18        {
 19            this.BorderStyle = BorderStyle.Groove;
 20            this.BorderWidth = 1;
 21        }

 22
 23        /// <summary>
 24        /// 构造函数
 25        /// </summary>
 26        /// <param name="dt"></param>

 27        public DropDownTreeList(DataTable dt): this()
 28        {
 29            BuildTree(dt);
 30        }

 31
 32        /// <summary>
 33        /// 构造函数
 34        /// </summary>
 35        /// <param name="selectid">选择项</param>
 36        /// <param name="dt"></param>

 37        public DropDownTreeList(string selectid,DataTable dt): this(dt)
 38        {
 39            this.TypeID.SelectedValue = selectid;
 40        }

 41
 42        /// <summary>
 43        /// 创建树
 44        /// </summary>
 45        /// <param name="dt"></param>

 46        public void BuildTree(DataTable dt)
 47        {
 48            if(this.ParentFiledName.Trim()=="")
 49            {
 50                throw new Exception("父字段名称不能为空");
 51            }

 52            if (this.NodeTextField.Trim() == "")
 53            {
 54                throw new Exception("节点文本字段名称不能为空");
 55            }

 56            if(this.NodeValueField.Trim()=="")
 57            {
 58                throw new Exception("节点值字段名称不能为空");
 59            }

 60            string SelectedType = "0";
 61
 62            TypeID.SelectedValue = SelectedType;
 63            this.Controls.Add(TypeID);
 64            TypeID.Items.Clear();
 65            //加载树
 66            TypeID.Items.Add(new ListItem("请选择     ""0"));
 67            DataRow[] drs = dt.Select(this.ParentFiledName + "=0");
 68            foreach (DataRow r in drs)
 69            {  
 70                TypeID.Items.Add(new ListItem(r[NodeTextField].ToString(), r[NodeValueField].ToString()));
 71                string blank=StyleDropTree.DropDownTreeList_Style(DropTreeStyle);
 72                BindNode(r[NodeValueField].ToString(), dt, blank);
 73            }

 74            
 75            TypeID.DataBind();
 76        }

 77
 78        private string _nodeValueField="";
 79        /// <summary>
 80        /// 节点值字段
 81        /// </summary>

 82        [Bindable(true), Browsable(true), Category("数据"), DefaultValue("")]
 83        public string NodeValueField
 84        {
 85            get
 86            {
 87                try
 88                {
 89                    return _nodeValueField;
 90                }

 91                catch
 92                {
 93                    throw new Exception();
 94                }

 95
 96            }

 97            set
 98            {
 99                this._nodeValueField = value;
100            }

101        }

102
103        private string _nodeTextField="";
104        /// <summary>
105        /// 节点文本字段
106        /// </summary>

107        [Bindable(true), Browsable(true), Category("数据"), DefaultValue("")]
108        public string NodeTextField
109        {
110            get
111            {
112                try
113                {
114                    return _nodeTextField;
115                }

116                catch
117                {
118                    throw new Exception();
119                }

120
121            }

122            set
123            {
124                this._nodeTextField = value;
125            }

126        }

127
128        /// <summary>
129        /// 创建树
130        /// </summary>
131        /// <param name="sqlstring">查询字符串</param>
132        /// <param name="selectid">选取项</param>

133        public void BuildTree(string selectid,DataTable dt)
134        {
135            BuildTree(dt);
136            this.TypeID.SelectedValue = selectid;
137        }

138
139        /// <summary>
140        /// 创建树结点
141        /// </summary>
142        /// <param name="sonparentid">当前数据项</param>
143        /// <param name="dt">数据表</param>
144        /// <param name="blank">空白符</param>

抱歉!评论已关闭.