首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

在asp.net中怎么使用"TreeView1树"控件,要实现点击一个"子树"可以相对应的打开网页,想知道后台的代码.多

2011-12-23 
在asp.net中如何使用TreeView1树控件,要实现点击一个子树,可以相对应的打开网页,想知道后台的代码.请

在asp.net中如何使用"TreeView1树"控件,要实现点击一个"子树",可以相对应的打开网页,想知道后台的代码.请教高手,谢谢了
--集团
        |
        油田电厂
        |
        龙凤电厂
        |
        宏伟电厂

这个是我做的"树"的结构,想实现点击油田电厂相对于"右面页页"里出现相应的"油田页面及Text.text等",点击龙凤电厂相对于"右面页页"里出现相应的"龙凤页面及Text.text等".刚学习ASP.NET,实在是不会呀!!!!

[解决办法]
用数据库记录节点也行 用XML文件也行 给你个例子吧
sql:
---------------------------------
ChildNodeID ChildNodeName ParentID NavigateUrl
1a www.baidu.com
2b www.sohu.com
3a11 ...
4a21 ...
5b12 ...
6a113 ...
C#代码
---------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.NodeBind();//页面加载时解析数据库绑定TreeNode根节点
this.DisPanel(true);//显示或不显示
}
}

#region//数据库连接字符串
public void conString()
{
string conStr = "server=.;uid=sa;pwd=;database=Demo ";
con = new SqlConnection(conStr);
}
#endregion

#region//页面加载时绑定TreeNode根节点
public void NodeBind()
{
this.tvadd.Nodes[0].ChildNodes.Clear();//清空TreeView中所有节点
this.tvadd.Nodes[0].Expanded = true;//设置根节点为展开形式
this.AddChildNode( "NULL ",this.tvadd.Nodes[0]);
}
#endregion

#region//递归解析数据库中节点并绑定在TreeView控件上
/// <summary>
/// 递归解析数据库中节点并绑定在TreeView控件上
/// </summary>
/// <param name= "sqltj "> 要解析库这个节点归属于哪个父节点 </param>
/// <param name= "tn "> 要添加下一级节点的父节点 </param>
public void AddChildNode(string sqltj,TreeNode tn)
{
string sql = "select * from AddNodes where ParentID ";//查询该父节点下还有无子节点SQL语句
if (sqltj == "NULL ")
{
sql += " IS NULL ";//也就是说是根节点下面的第一级子节点
}
else
{
sql += "= " + sqltj;//查询sqltj下有无子节点
}

DataTable dt = this.dtDataBind(sql);
if (dt.Rows.Count == 0)//说明此节点下无子节点
{
return;//退出
}
else
{
for (int i = 0; i < dt.Rows.Count; i++)//循环DataTable表中子节点记录
{
TreeNode tnchild = new TreeNode();//创建新的子节点
tnchild.Text = dt.Rows[i][1].ToString();//为新建子节点的文本赋值
tnchild.Value = dt.Rows[i][1].ToString();//为新建子节点的Value赋值

//-----------------------------调用数据库中数据 跳转你要去的网页
tn.NavigateUrl= dt.Rows[i][3].ToString();
tnchild.Expanded = true;//设置为不展开节点
tn.ChildNodes.Add(tnchild);//添加此节点的下一级子节点
//递归调用,一直往下直到添加完这一级下面的所有子节点为止,再转到下一个父节点,并添加所有此父节点下面的所有子节点
//i代表DataTable表中循环记录,0代表取得这个记录的ID值,为下面继续检查这个ID下是否还有子目录
//tnchild递归传递给下一次调用此方法,此时如果这个节点下还有子节点,它便成为父节点,对它下面的子节点进行添加
this.AddChildNode(dt.Rows[i][0].ToString(),tnchild);
}
}
}
#endregion

[解决办法]
XML文件和TreeView的使用方法:
---------------------------------------------------
<?xml version= "1.0 " encoding= "utf-8 " ?>
<school>


<class name= "classone ">
<student id= "1 ">
<name id= "tom " sex= "boy " />
</student>
<student id= "2 ">
<name id= "jey " sex= "boy " />
</student>
<student id= "3 ">
<name id= "jam " sex= "gril " />
</student>
<student id= "4 ">
<name id= "christina " sex= "gril " />
</student>
</class>
<class name= "classtwo ">
<student id= "1 ">
<name id= "mark " sex= "boy " />
</student>
<student id= "2 ">
<name id= "jane " sex= "gril " />
</student>
<student id= "3 ">
<name id= "jett " sex= "gril " />
</student>
<student id= "4 ">
<name id= "ateen " sex= "gril " />
</student>
</class>
</school>
C#:
------------------------
...
using System.Xml;
using System.Xml.XPath;

public partial class Test_TreeViewDemo2 : System.Web.UI.Page
{
XmlDocument xmlDoc;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.TreeView1.ShowLines = true;
this.LoadXmlTree();
}
}

public void LoadXmlTree()
{
xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath( "classXml.xml "));

XmlNodeList xnl = xmlDoc.SelectSingleNode( "school ").ChildNodes;
TreeNode tn = new TreeNode();
tn.Text = "school ";
tn.Value = "-1 ";
tn.Expanded = false;
this.TreeView1.Nodes.Add(tn);

foreach (XmlNode xn in xnl)
{
XmlElement xe = (XmlElement)xn;
TreeNode tnC = new TreeNode();
tnC.Text = xe.GetAttribute( "name ");
tnC.Value = xe.GetAttribute( "name ");
tnC.Expanded = true;
tn.ChildNodes.Add(tnC);
this.TreeNodeBind(xn.ChildNodes,tnC);
}
}

public void TreeNodeBind(XmlNodeList xnl,TreeNode tn)
{
foreach (XmlNode xnNext in xnl)
{
XmlElement xe = (XmlElement)xnNext;
TreeNode tnNext = new TreeNode();
tnNext.Text = xe.GetAttribute( "id ");
tnNext.Value = xe.GetAttribute( "sex ");
tnNext.Expanded = true;
tn.ChildNodes.Add(tnNext);
this.TreeNodeBind(xnNext.ChildNodes,tnNext);
}
}

[解决办法]
<%@ Page Language= "C# " AutoEventWireup= "true " CodeFile= "Default.aspx.cs " Inherits= "_Default " %>

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

<html xmlns= "http://www.w3.org/1999/xhtml " >
<head runat= "server ">
<title> 无标题页 </title>
</head>
<body>


<form id= "form1 " runat= "server ">
<div>
<asp:TreeView ID= "TreeView1 " runat= "server " ImageSet= "Msdn " NodeIndent= "10 " ShowLines= "True ">
<ParentNodeStyle Font-Bold= "False " />
<HoverNodeStyle BackColor= "#CCCCCC " BorderColor= "#888888 " BorderStyle= "Solid " Font-Underline= "True " />
<SelectedNodeStyle BackColor= "White " BorderColor= "#888888 " BorderStyle= "Solid " BorderWidth= "1px "
Font-Underline= "False " HorizontalPadding= "3px " VerticalPadding= "1px " />
<Nodes>
<asp:TreeNode Text= "集团 " Value= "集团 ">
<asp:TreeNode Text= "油田电厂 " Value= "油田电厂 " NavigateUrl= "http:\\www.163.com "> </asp:TreeNode>
<asp:TreeNode Text= "龙凤电厂 " Value= "龙凤电厂 "> </asp:TreeNode>
<asp:TreeNode Text= "宏伟电厂 " Value= "宏伟电厂 "> </asp:TreeNode>
</asp:TreeNode>
</Nodes>
<NodeStyle Font-Names= "Verdana " Font-Size= "8pt " ForeColor= "Black " HorizontalPadding= "5px "
NodeSpacing= "1px " VerticalPadding= "2px " />
</asp:TreeView>

</div>
</form>
</body>
</html>

热点排行