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

效果图如下:

(上传图片报错呀)

先上代码:

Code

 

 

 

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);

 


posted @ 2009-03-11 02:50  Hurry  阅读(2118)  评论(5编辑  收藏  举报