`
wangtao0501
  • 浏览: 56634 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

dtree树.可以动态加载节点

    博客分类:
  • js
阅读更多
更多内容请关注:http://www.shangdiren.com
     function Node(name,url,ico,iconOpen,display,guid,type,hasChild)
{
   this.id = NaN;
this.name = name;
this.url = !url ? this.name : "<a href=""+this.url+"" mce_href="&quot;+this.url+&quot;""+  (this.config.target ? "target='"+this.config.target+"'":'')+ (this.config.useStatusText?" onmouseover=\"window.status='"+ this.name + "';return true;\" onmouseout=\"window.status='';return true;\"" :'' ) + " ></a>"+this.name+"</a>";
this.ico = ico;
this.iconOpen = iconOpen;
this.Childs = [];
this.display = display;
this.guid = guid;
this.type = type;
this.tree = NaN;
this.parent = NaN;
this.depth = NaN;
this.hasLoad = !(hasChild == undefined || hasChild) ;
this.innerHTML = null;
}
   
function Tree()
{
this.ParentNode = NaN;
this.Ident = [];
this.index = NaN;
this.selectedNode = null;
}
   
Node.prototype.Icons = {
root	 : 'img/base.gif',
folder	 : 'img/folder.gif',
folderOpen	: 'img/folderopen.gif',
node	 : 'img/page.gif',
empty	 : 'img/empty.gif',
line	 : 'img/line.gif',
join	 : 'img/join.gif',
joinBottom	: 'img/joinbottom.gif',
plus	 : 'img/plus.gif',
plusBottom	: 'img/plusbottom.gif',
minus	 : 'img/minus.gif',
minusBottom	: 'img/minusbottom.gif',
nlPlus	 : 'img/nolines_plus.gif',
nlMinus	 : 'img/nolines_minus.gif'
}
Node.prototype.config = {
   target : 'child',
   useSelection  : true,
   closeSameLevel : true,
   useStatusText  : true
}
   
Node.prototype.AddNode = function(name,url,ico,iconOpen,display,guid,type,hasChild)
{
var node = new Node(name,url,ico,iconOpen,display,guid,type,hasChild); 
node.parent = this;
node.tree = this.tree;
node.depth = this.depth+1;
this.hasLoad = true;
node.id = ++this.tree.index;
this.Childs[this.Childs.length] = node;
};
Tree.prototype.Show = function(id)
{
   this.SelectNode(this.ParentNode,id);
   this.selectedNode.display = true;
   if(!this.selectedNode.hasLoad)
   {
      this.selectedNode.Load();
   }
   else
   {    
       this.selectedNode.innerHTML = this.selectedNode.toString();
       this.selectedNode = null;
       DrawTree();	        
   }
}
Tree.prototype.Close = function(id)
{
   this.SelectNode(this.ParentNode,id);
   this.selectedNode.display = false;
   this.selectedNode = null;
   document.getElementById("div1").innerHTML = tree;
}
   
Node.prototype.CloseAll = function()
{
this.display = false;
}
Node.prototype.Load = function()
{
   var xmlHttp = window.ActiveXObject ? new ActiveXObject("microsoft.XMLHTTP") : new XMLHttpRequest();
   var url =  "GetTreeNode.ashx?type=" +this.type+"&guid="+this.guid;
   xmlHttp.open('GET',url,true);
   xmlHttp.onreadystatechange = function()
   {
       if(xmlHttp.readyState == 4 )
       {   
           if(xmlHttp.status == 200)
           {
       	    var xmlDoc = xmlHttp.responseXML;
       	    var root = xmlDoc.documentElement;
       	    if(root != null)
       	    {
       	        for(var i=0;i<root.childNodes.length;i++)
       	        {
       	            var node = root.childNodes[i];
       	            var hasChild = node.childNodes[3].text == 'true' ? true:false;
       	            tree.selectedNode.AddNode(node.childNodes[0].text,'1','folder','folderOpen',false,node.childNodes[1].text,node.childNodes[2].text,hasChild);
       	        }
       	    }
       	    tree.selectedNode.hasLoad = true;
       	    tree.selectedNode.innerHTML = tree.selectedNode.toString();
       	    tree.selectedNode = null;
       	    DrawTree();
       	}
       }
   }
      xmlHttp.send(null);
}
   
Node.prototype.ShowAll = function()
{
for(var i=0;i<this.Childs.Length;i++)
{
this.Childs[i].display = true;
}
}
   
//本来想通过递归循环的方式去实现,发现挺麻烦的。
Node.prototype.toString = function()
{
var str ="<div class='dTreeNode'>";
for(var i=0;i<this.depth;i++)
{
str += "<img src="" + (this.tree.Ident[i] == 0? this.Icons.line:this.Icons.empty)+"" mce_src="&quot; + (this.tree.Ident[i] == 0? this.Icons.line:this.Icons.empty)+&quot;" />";
}
if( this.depth == 0 )
{
str += this.display ? "<a href="javascript:tree.Close(0);" mce_href="javascript:tree.Close(0);" ><img src= '"+this.Icons.nlMinus+"'/></a>" : "<a href="javascript:tree.Show(0);" mce_href="javascript:tree.Show(0);" ><img src= '"+this.Icons.nlPlus+"'/></a>";
}
else
{
   if(this.Childs.length == 0 && this.hasLoad)
   {
       str += (this.tree.Ident[this.depth] == 0 ? "<img src= 'img/join.gif' />" : "<img src= 'img/joinbottom.gif' />" ) ;
   } 
   else
   {
       str += this.display ? "<a href="javascript:tree.Close("+this.id+");" mce_href="javascript:tree.Close(&quot;+this.id+&quot;);" ><img src=""+(this.tree.Ident[this.depth] == 0? "img/minus.gif" mce_src="&quot;+(this.tree.Ident[this.depth] == 0? &quot;img/minus.gif" />" :"img/minusbottom.gif'  />")  : "<a href="javascript:tree.Show("+this.id+");" mce_href="javascript:tree.Show(&quot;+this.id+&quot;);" ><img src=""+(this.tree.Ident[this.depth] == 0? "img/plus.gif" mce_src="&quot;+(this.tree.Ident[this.depth] == 0? &quot;img/plus.gif"  />" :"img/plusbottom.gif'  />") ;
       str += "</a>";
   }
}
str +=  "<img src= '"+this.Icons[this.display? this.iconOpen:this.ico] +"'/>";
str += this.url;
str += "</div>"
if(this.display)
{
   for(var i=0;i<this.Childs.length;i++)
   {
   this.tree.Ident[this.depth+1] = (i == this.Childs.length-1 ? 1:0);
   str += this.Childs[i].toString();
   }
}
this.innerHTML = str;
return str;
}
Tree.prototype.toString = function()
{
var str = "<div class='dtree'>";
str += this.ParentNode.toString();
str += "</div>";
return str;
} 
Tree.prototype.SelectNode = function(node,id)
{
   if(node.id == id)
   {
       this.selectedNode = node;
       return;
   }
   
   for(var i=0;i<node.Childs.length;i++)
   {
       this.SelectNode(node.Childs[i],id);
       if(this.selectedNode != null)
       {
           return;
       }
   }
}
   
Tree.prototype.InitParent = function(node)
{
node.parent = NaN;
node.id = 0;
node.depth = 0;
node.tree = this;
this.index = 0;
this.Ident[0] = 1;
this.ParentNode = node;
}  
function DrawTree()
{
            document.getElementById("div1").innerHTML = tree;
}
function LoadAll(node)
{
   if(!node.hasLoad)
   {
       tree.Show(node.id);
   }
   for(var i=0;i<node.Childs.length;i++)
   {
       LoadAll(node.Childs[i]);
   }
}

        protected void Page_Load(object sender, EventArgs e)
        {
            string str = System.Configuration.ConfigurationManager.AppSettings["sqlConnect"];
            DataSet ds = new DataSet();
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["sqlConnect"]))
            {
                try
                {
                    con.Open();
                    SqlDataAdapter adp = new SqlDataAdapter("select top 2 * from province;select * from city;select * from area",con);
                    adp.Fill(ds);
                    sb.Append("<mce:script type='text/javascript' defer='defer'><!--
");
                    sb.Append("var tree = new Tree();");
                    sb.Append("tree.InitParent(new Node('全国省市','1','root','root',true,'1','1'));");
                    DataTable dtProc = ds.Tables[0];
                   </p>
        <p> <!--<A href="#">http://msnpiki.msnfanatic.com/index.php/Main_Page</A>--></p>
		<div id="ad_f4" class="ad_f4"><script src="/js/2009/ad/ad_f4.js"></script></div>
      <div id="ad_f10" class="ad_f10"><script src="/js/2009/ad/ad_f10.js"></script></div><div id="ad_f11" class="ad_f11"><script src="/js/2009/ad_f11.js"></script></div>
	  </div>
      <div align="center" class="pager w635px"><span id="pagesSpan"> <span id="1">1</span> <a href="185188_2.html">2</a></span></div>
      <div class="fh b14 w635px"> 如果图片或页面不能正常显示请<a onClick="#" onMouseOver="this.style.cursor='hand';" class= "redlink"><font color="#990000"><strong>点击这里</strong></font></a> 站内搜索:
     <iframe id="baiduframe" marginwidth="0" marginheight="0" scrolling="no"
  framespacing="0" vspace="0" hspace="0" frameborder="0" width="280" height="21" 
  src="http://unstat.baidu.com/bdun.bsc?tn=diybl_pg&cv=0&cid=1061623&csid=541&bgcr=ffffff&urlcr=0000ff&tbsz=180&sropls=2,99&insiteurl=diybl.com&defid=99&kwgp=0&ch=1">
</iframe>
      </div>
      <div class="toollinks hui"> 【<A href="javascript:window.external.addFavorite(window.location,'MSN协议分析-DIY部落');">收藏此页</a>】【<A 
      href="http://www.diybl.com/course/webjsh/osgl/5589fdssd.html" target="_blank">BBS社区</A>】【<A href="#comment">发表评论</A>】【<a href="#">返回顶部</a>】【<A 
      href="javascript:window.close()">关闭</A>】 </div>
      <div class="p_bottom">
                  
                     <a href="/course/4_webprogram/asp.net/netjs/20091221/185187.html">上一篇文章:页面间传参的方法</a>
                                      <br>
                                        <a href="/course/4_webprogram/asp.net/netjs/20091221/185189.html">下一篇文章:Win7下安装SQL Server2005</a>
                         </div>
    </div>
    <!--content area end!-->
    <div class="fc"></div>
    <div class="left-contect mtop blue border">
      <div class="b14 bold fh left-width">推荐文章</div>
    </div>
    <div class="left-contect white border recommend">
      <div class="tj_l fh20 white"> 
       <UL>
            
                                              <LI>  <a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/200855/113165.html" target="_blank">nplot用法(线、柱、标签、移..</a></LI>
                              <LI>  <a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/2008628/128934.html" target="_blank">ASP.NET中应用Excel:(5)..</a></LI>
                              <LI>  <a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/20090916/175385.html" target="_blank">web developer tips (48):..</a></LI>
                              <LI>  <a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/20090316/161875.html" target="_blank">[VB.NET源码]软件安装管..</a></LI>
                              <LI>  <a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/2007930/75604.html" target="_blank">VB使用WinInet API创建简..</a></LI>
                              <LI>  <a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/2007113/82443.html" target="_blank"> PE文件格式</a></LI>
                              <LI>  <a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/20091215/184776.html" target="_blank">多线程CreateThread函数..</a></LI>
                              <LI>  <a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/20071222/93258.html" target="_blank">Delphi2007企业版破解</a></LI>
                 </UL></div>
      <div class="tj_r fh20 white"> 
      <ul>
                                               <li><a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/20071020/78353.html" target="_blank">C++ Builder里面保持控件..</a></li>
                                <li><a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/20091126/183460.html" target="_blank">label控件应用</a></li>
                                <li><a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/2008313/104606.html" target="_blank">页面传值的方法</a></li>
                                <li><a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/20091027/180318.html" target="_blank">c# 下载千千静听歌词</a></li>
                                <li><a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/2008219/100165.html" target="_blank">EXCEL文件的SQL语句</a></li>
                                <li><a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/20091115/182526.html" target="_blank">11.如何生成静态页面的五..</a></li>
                                <li><a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/2007101/75798.html" target="_blank">Administrator用户直接获..</a></li>
                                <li><a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/20091126/183467.html" target="_blank">C#中获取文件夹的名称</a></li>
                        </ul> 
      </div>
    </div>
    <div class="fc"></div>
    <div class="left-contect mtop gray border-hui">
      <div class="b14 bold fh left-width"><a name="comment"></a>文章评论</div>
    </div>
    <div class="left-contect border-hui">
	  <div id="divComment" class="left-width fh"></div>
    </div>
    <div class="fc"></div>
    <div class="comment_1 mtop border w_l">
      <div class="blue fh b14 bold pleft">请您留言</div>
      <div class="cleanblock fh22">
        昵称:
         <input name="tbName" id="tbName" class="input input_comment" type="text" size="15" value="" onclick="this.focus();this.select()"maxlength="20"/>        
        <br />
		<span style="float:left;">验证码:<input name="tbCode" id="tbCode" class="input input_comment" type="text" size="6"  /></span><span id="spanCode" style=" float:left; clear:right; "><img  id="Img2" onclick="this.src=this.src"  style="display:none;"/></span>
        <a href="http://user.diybl.com/register.aspx" target="_blank"><font color=red><br />
        注册会员</font></a> <a href="http://user.diybl.com/login.aspx" target="_blank">会员登陆</a> <br />
        <textarea name="tbContent" id="tbContent" rows="6" class=" input" style="VERTICAL-ALIGN: text-top; WIDTH:290px; HEIGHT: 7em">
1
0
分享到:
评论

相关推荐

    dtree所需要的dtree.css和dtree.js文件(包括图标)

    它包括了节点的创建、操作、事件处理等逻辑,使得可以通过JavaScript动态地加载、操作和交互树形数据。开发者需要对JavaScript有一定的理解,才能有效利用这个库来处理数据结构,并通过调用API实现各种功能,如添加...

    dtree.js + dtree.css

    1. 动态渲染:可以根据需要动态添加、删除或修改节点,使界面实时更新。 2. 事件处理:提供了丰富的事件接口,如点击、展开、折叠等,方便进行交互逻辑的实现。 3. 自定义样式:允许开发者通过CSS进行个性化定制,以...

    Dtree+Jquery动态生成树节点.

    - **交互与更新**:当服务器返回新数据时,可以通过DTree提供的API动态添加、删除或更新树节点。 6. **优化与性能**:在实际应用中,可能需要考虑性能问题,如大量数据一次性加载可能导致页面卡顿,这时可以采用懒...

    Dtree+Jquery动态生成树节点

    在IT领域,动态生成树节点是一项常见的需求,特别是在构建用户...动态生成树.rar"可能是实际的代码示例,"dtree参数说明..rar"则可能包含了DTree各种参数的详细解释,这些资源对于理解和应用DTree都是非常有价值的。

    DTree用法.pdf

    DTree支持异步加载节点的功能,通过设置一个URL属性,可以在节点第一次点击时通过Ajax请求去服务器端获取子节点数据,并在获取到数据之后动态地添加节点到树中。 6. 事件处理: 事件处理是DTree的一个重要功能,...

    dtree+ajax异步加载树

    当dtree与Ajax结合时,可以实现异步加载树节点,提升用户体验,减少页面加载时间。 ### dtree基础知识 1. **dtree基本结构**:dtree通过JSON数据格式来构建树形结构。每个节点包含`id`(唯一标识)、`text`(显示...

    dtree api.rar

    - `loadData(data)`: 用于动态加载树节点数据,`data`是一个JSON对象数组,每个对象代表一个节点,包含ID、文本、子节点等属性。 - `appendData(data)`: 在现有树的基础上添加新的节点数据。 - `insertData(data,...

    iitraweb+dtree(dtree.js)用法!

    dTree.js 是一个纯JavaScript实现的树形结构组件,它可以在客户端动态加载数据,提供丰富的交互效果,如折叠/展开节点、拖放操作等。dTree.js适用于创建导航菜单、文件系统浏览器或其他需要层次结构展示的数据。它的...

    封装的dTree.js文件动态创建树形菜单

    本篇文章将详细讲解如何利用封装的dTree.js文件,结合EL(Expression Language)表达式来动态创建树形菜单。 dTree.js是一个轻量级的JavaScript库,专门用于构建交互式的树形菜单。它提供了丰富的API和配置选项,...

    带节点点击事件的DTree

    通过以上介绍,我们可以看到【带节点点击事件的DTree】是一个强大且灵活的前端组件,它结合了树形结构、事件处理和动态数据加载等多种功能,为开发人员提供了构建交互式界面的有效工具。在实际项目中,开发者可以...

    我修改的dtree,可以动态增加,修改,删除

    - **loadNode** 方法:用于异步加载节点的数据。 - **updateNode** 方法:更新已存在的节点信息。 - **deleteNode** 方法:删除指定的节点及其子节点。 ##### 5. 示例代码分析 通过提供的部分代码示例,可以看出...

    ajax,servlet动态加载dtree

    在本项目"ajax,servlet动态加载dtree"中,我们看到的是利用Ajax技术和Servlet实现dtree(一种树形菜单控件)的动态加载。这个项目可能是一个文件管理系统或者目录浏览应用,其中dtree用于展示文件或目录结构,而...

    dtree动态生成树

    例如,`onClick`事件可以监听节点点击,`onCheck`事件可以处理节点的选中状态变化,`loadData`方法用于动态加载数据等。 总之,dtree作为jQuery的一个插件,提供了丰富的功能来构建动态生成树,适用于各种需要展示...

    layui dtree树形结构

    1. **易用性**:layui dtree的API设计简单明了,开发者可以通过几行代码快速实现树形结构的展现。 2. **灵活性**:它可以自定义节点的展开、关闭、选中、禁用等多种状态,支持异步加载数据,满足各种业务需求。 3. *...

    下拉树 dtree.rar

    - **异步加载**:如果数据量很大,可以采用异步加载技术,只在用户展开特定节点时加载其子节点,提高页面性能。 4. **库和框架**:虽然可以手动编写所有这些功能,但通常我们会使用现有的JavaScript库或框架,如...

    dtree不选中子节点处理

    标题中的"dtree不选中子节点处理"指的是在使用dtree这个JavaScript库时,遇到的一个问题,即在操作树形结构数据时,如何避免选中父节点的同时自动选中其所有子节点。dtree通常用于创建交互式的、可展开和折叠的树形...

    Dtree树菜单 动态树

    动态树形菜单意味着菜单项可以根据用户的交互或者服务器的数据动态地加载和更新。这种特性使得DTree适用于处理大量数据或数据频繁变化的情况,避免一次性加载所有节点导致页面性能下降。 DTree通常基于JavaScript和...

    Dtree目录树下载

    了解并熟练掌握这些API是使用DTree的关键,它允许开发者实现动态加载数据、响应用户操作、实现树的异步加载等多种高级功能。 `example01.html`是一个示例文件,展示了DTree的基本用法。通过查看这个例子,开发者...

    Dtree动态树菜单

    无限动态树菜单意味着它可以无限制地添加子节点,同时能根据用户操作实时更新。这种菜单可以根据数据源动态加载,只显示当前需要的部分,以提高性能。当用户展开或折叠节点时,菜单会异步加载或卸载子节点,这种...

    dtree 树结构 前端

    - 树是一种非线性的数据结构,由节点和边组成,每个节点可以有零个或多个子节点。在前端中,树结构通常通过JavaScript对象数组来表示。 - 节点通常包含数据(如ID、名称、状态等)和指向子节点的引用,形成层级...

Global site tag (gtag.js) - Google Analytics