生成jQuery simple treeview所需html的一个小控件


(正在装 VS2008,乘这个时间分享下一个小控件,没法整理demo,只能从项目中copy部分代码)

  jQuery simple treeview 需要这样的一段html

<ul class="filetree" id="treeFolder">
<li id="1"><span  class="folder">Root</span>
 <ul>
 <li id="2" class="closed"><span  class="folder">node1</span><ul></ul></li>
 <li id="22" class="closed"><span  class="folder">node2</span><ul></ul></li>
 <li id="23" class="closed"><span  class="folder">node3</span><ul></ul></li>
 </ul>
</li>
<li id="64"><span  class="imagebase">root2</span></li>
</ul>

  放个空的<ul></ul>在这边,是因为那个节点有子节点,但我们没加载他,当用户点击展开按钮在展开。展开的时候去服务器端取个数据自己加上去,这里就不废话了。

  先上代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace aaa.bbb.ccc//自己改
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:JavaScriptTree runat=server></{0}:JavaScriptTree>")]
    public class JavaScriptTree : WebControl
    {
        private List<JavaScriptTreeNode> _Nodes = new List<JavaScriptTreeNode>();
        public List<JavaScriptTreeNode> Nodes
        {
            set
            {
                _Nodes = value;
            }
            get
            {
                return _Nodes;
            }
        }

        private string _className;
        public string ClassName
        {
            get
            {
                return _className;
            }
            set
            {
                _className = value;
            }
        }

        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            foreach (JavaScriptTreeNode item in _Nodes)
            {
                base.Controls.Add(item);
            }
        }

        public override void RenderBeginTag(HtmlTextWriter writer)
        {
            writer.WriteBeginTag("div");
            writer.WriteAttribute("class", this.ClassName);
            writer.WriteAttribute("id", "div" + this.ID);
            writer.Write(HtmlTextWriter.TagRightChar);

            writer.WriteBeginTag("ul");
            writer.WriteAttribute("class", this.ClassName);
            writer.WriteAttribute("id", this.ID);
            writer.Write(HtmlTextWriter.TagRightChar);
        }

        public override void RenderEndTag(HtmlTextWriter writer)
        {
            writer.WriteEndTag("ul");
            writer.WriteEndTag("div");
        }

        protected override HtmlTextWriterTag TagKey
        {
            get
            {
                return HtmlTextWriterTag.Div;
            }
        }
    }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace aaa.bbb.ccc
{
    public class JavaScriptTreeNode : Panel
    {
        private string _id;
        public string ID
        {
            get
            {
                return _id;
            }
            set
            {
                _id = value;
            }
        }
        private string _name;
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }

        private string _className;
        public string ClassName
        {
            get
            {
                return _className;
            }
            set
            {
                _className = value;
            }
        }

        private int _childNumber;
        public int ChildNumber
        {
            get
            {
                return _childNumber;
            }
            set
            {
                _childNumber = value;
            }
        }

        private bool _isExpanded=false;
        public bool IsExpanded
        {
            get
            {
                return _isExpanded;
            }
            set
            {
                _isExpanded = value;
            }
        }

        private List<JavaScriptTreeNode> _Nodes = new List<JavaScriptTreeNode>();

        public List<JavaScriptTreeNode> Nodes
        {
            set
            {
                _Nodes = value;
            }
            get
            {
                return _Nodes;
            }
        }

        protected override HtmlTextWriterTag TagKey
        {
            get
            {
                return HtmlTextWriterTag.Li;
            }
        }

        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            foreach (JavaScriptTreeNode item in _Nodes)
            {
                base.Controls.Add(item);
            }
        }

        public override void RenderBeginTag(HtmlTextWriter writer)
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Id, this.ID);
            if (!this.IsExpanded)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "closed");
            }
            base.RenderBeginTag(writer);
            writer.WriteBeginTag("span");

            if (!string.IsNullOrEmpty(this.ClassName))
            {
                writer.WriteAttribute("class", this.ClassName);
            }
            writer.Write(HtmlTextWriter.TagRightChar);
            writer.Write(this.Name);
            writer.WriteEndTag("span");
            if (this.ChildNumber > 0)
            {
                writer.WriteBeginTag("ul");
                writer.Write(HtmlTextWriter.TagRightChar);
            }
        }

        public override void RenderEndTag(HtmlTextWriter writer)
        {
            if (this.ChildNumber > 0)
            {
                writer.WriteEndTag("ul");
            }
            base.RenderEndTag(writer);
        }
    }
}


  如何使用:

  .aspx

<%@ Register Assembly="ServerControls" Namespace="aaa.bbb.ccc" TagPrefix="sc" %>
<sc:JavaScriptTree ID="treeFolder" runat="server" ClassName="filetree"  />

///

.aspx.cs

        JavaScriptTreeNode node = new JavaScriptTreeNode();
        node.ID = "123";
        node.Name = "name";
        node.ChildNumber = 345;
        node.ClassName = "folder";
        node.IsExpanded = false;
        this.treeFolder.Nodes.Add(node);

         //node.Nodes.Add(node1);//自己去添加子节点
        //node.Nodes.Add(node2);


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3