动态加载dtree.js树treeview(示例代码)

Javascript教程 2025-08-12

复制代码代码如下:

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.***w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >

< html >

< head >

< title >Destroydrop » Javascripts » Tree< /title >

< link rel="StyleSheet" href="dtree.css" type="text/css" / >

< script type="text/javascript" src="dtree.js" >< /script >

< /head >

< body >

< div >

< p >< a href="javascript: d.openAll();" >open all< /a > | < a href="javascript: d.closeAll();" >close all< /a >< /p >

< script type="text/javascript" >

< !--

d = new dTree('d');

d.add(0,-1,'My example tree');

d.add(1,0,'Node 1','example01.html');

d.add(2,0,'Node 2','example01.html');

d.add(3,1,'Node 1.1','example01.html');

d.add(4,0,'Node 3','example01.html');

d.add(5,3,'Node 1.1.1','example01.html');

d.add(6,5,'Node 1.1.1.1','example01.html');

d.add(7,0,'Node 4','example01.html');

d.add(8,1,'Node 1.2','example01.html');

d.add(9,0,'My Pictures','example01.html','Pictures I've taken over the years','','','img/imgfolder.gif');

d.add(10,9,'The trip to Iceland','example01.html','Pictures of Gullfoss and Geysir');

d.add(11,9,'Mom's birthday','example01.html');

d.add(12,0,'Recycle Bin','example01.html','','','img/trash.gif');

document.write(d);

//-- >

< /script >

< /div >

< p >< /p >

< /body >

< /html >

接下来我们可以分析 我们要是想让他动态的生成 我们 要怎么处理

我们可以看到如下代码是生成树的关键:

复制代码代码如下:

< div >

< p >< a href="javascript: d.openAll();" >open all< /a > | < a href="javascript: d.closeAll();" >close all< /a >< /p >

< script type="text/javascript" >

< !--

d = new dTree('d');

d.add(0,-1,'My example tree');

d.add(1,0,'Node 1','example01.html');

d.add(2,0,'Node 2','example01.html');

d.add(3,1,'Node 1.1','example01.html');

d.add(4,0,'Node 3','example01.html');

d.add(5,3,'Node 1.1.1','example01.html');

d.add(6,5,'Node 1.1.1.1','example01.html');

d.add(7,0,'Node 4','example01.html');

d.add(8,1,'Node 1.2','example01.html');

d.add(9,0,'My Pictures','example01.html','Pictures I've taken over the years','','','img/imgfolder.gif');

d.add(10,9,'The trip to Iceland','example01.html','Pictures of Gullfoss and Geysir');

d.add(11,9,'Mom's birthday','example01.html');

d.add(12,0,'Recycle Bin','example01.html','','','img/trash.gif');

document.write(d);

//-- >

< /script >

< /div >

我们是不是可以把上面的代码写到.cs文件里面呢! 是可以的

首先我们必须在数据库建立一张表

我们看下其实这里的这么多表字段 个人觉得 pid子节点(如果是0那么就是根节点,1子节点,3子节点的子节点) name要显示的名称 url连接地址 title标题 icon关闭图片的路径 iconopen打开图片的路径 这里不详细介绍了 大家可以试下 我们最主要的就是根据username 进行判断 大家也可以是把username换成是引用的字段 我这里只是一个测试的所以就用了个字符串类型 下面我们来动态加载treeview

首先我们建立一个数据库连接类返回一个Dataset类型 我是个人喜欢你们也可以直接返回一个DataTable

复制代码代码如下:

private DataSet GetDt(string username)

{

string strConn="server=ZHOUYUN;database=Mytest;uid=sa;pwd=123456";

SqlConnection conn = new SqlConnection(strConn);

string strSql = string.Format("

select * from treeview where username='{0}'",username);

SqlDataAdapter da = new SqlDataAdapter(strSql, conn);

DataSet ds = new DataSet();

da.Fill(ds);

return ds;

}

然后我们把先我们生成书的js放到.cs文件里面来 非常关键的一个就是注意.js文件的倒入 和 .css文件的倒入 我们可以用到Page.hearder.innerHTMl=""你要倒入的文件名

我们来看代码

复制代码代码如下:

public void treeview()

{

//实力化一个长字符串类型

StringBuilder strbu = new StringBuilder();

//我们在生成一个保留静态文本的位置的类

Literal lit = new Literal();

//这里就是我们刚才提到的要把.js和.cs文件倒入的位置

//page.Header.InnerHtml的意思就是把这段文件引用放到html标签里的

// < head >这个之间< /head >

Page.Header.InnerHtml = @"< 

link rel='StyleSheet' href='dtree.css' type='text/css'/ >

< script type='text/javascript' src='dtree.js' >< /script >";//倒入结束

string username = "zhangsan";

DataSet ds = GetDt(username.Trim());

DataTable dt = ds.Tables[0];

//我们现在开始把js文件放到长字符串类型里面

strbu.Append(@"< div class='dtree' >

< p >< a href='javascript: d.openAll();' >open all< /a > |

< a href='javascript: d.closeAll();' >close all< /a >< /p >

< script type='text/javascript' >

< !--

d = new dTree('d');

d.add(0,-1,'My example tree');");//这里结束一段长字符穿类型

// 我们开始循环DataTable

for (int i = 1; i <  dt.Rows.Count; i++)

{

//我们又开始添加长文件类型 大家这里注意了拼接字符穿

//的时候要仔细点

strbu.Append(@"

d.add(" + i + "," + dt.Rows["pid"] + ",'" +

dt.Rows["name"] + "','" +

dt.Rows["url"] + "','" +

dt.Rows["target"] + "','" +

dt.Rows["icon"] + "','"+

dt.Rows["iconopen"]+"');");

}

//再次添加长文件类型

strbu.Append(@"document.write(d);

-- >

< /script >

< /div > "); //长文件类型添加结束

//现在我们保留静态文本的text值就等于 我们刚才的长文件类型的值

lit.Text = Convert.ToString(strbu);

//那么我们在想 我怎么把个段文本放到< body >

//< form >这个位置呢< /form >< boy >

form1.InnerHtml = "";

//我们可以直接从.cs文件里面获得form1然后.Controls.Add()

//他只能放静态文本所以我们把刚才长文件类型的值赋给了静态文本

//那么我们这里也就可以直接添加进来了

form1.Controls.Add(lit);

}