treeview 控件绑定 xml
页面 aspx 代码:
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="treeview.aspx.cs" Inherits="treeview" %>
- <!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 id="Head1" runat="server">
- <title>TreeView控件的例子</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:TreeView ID="treeAreaList" runat="server" AutoGenerateDataBindings="False" OnSelectedNodeChanged="Tree_SelectedNodeChanged">
- </asp:TreeView>
- </div>
- </form>
- </body>
- </html>
后台代码:
- using System;
- using System.Data;
- using System.Configuration;
- using System.Collections;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- using System.Xml;
- using System.Xml.XPath;
- public partial class treeview : System.Web.UI.Page
- {
- XmlDocument xmlDoc;
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!Page.IsPostBack)
- {
- MakeParentNode();Math.
- }
- }
- #region //生成父结点
- /// <summary>
- /// 生成
- /// </summary>
- protected void MakeParentNode()
- {
- treeAreaList.Nodes.Clear();
- xmlDoc = new XmlDocument();
- xmlDoc.Load(Server.MapPath("area.xml "));//动态加载XML文档
- XmlNodeList nodeList = xmlDoc.SelectSingleNode("Area").ChildNodes;//获取Area节点下的所有子结点
- //定义Area结点
- TreeNode topNode = new TreeNode();//定义顶级节点
- topNode.Text = "area ";
- // tn.Value = "-1";
- topNode.Expanded = true;
- treeAreaList.Nodes.Add(topNode);//添加"区域"父结点
- XmlElement element = null;
- TreeNode treeNode = null;
- //遍历区域下的所有省和直辖市
- foreach (XmlNode node in nodeList)
- {
- element = (XmlElement)node;
- treeNode = new TreeNode();
- treeNode.Text = element.GetAttribute("cAreaName");//在树控件上显示省或直辖市的名称
- treeNode.Value = element.GetAttribute("iAreaID");//获取节点值
- treeNode.Expanded = true;
- topNode.ChildNodes.Add(treeNode);//将省或直辖市级结点添加到顶级节点中
- MakeChildNode(node.ChildNodes, treeNode);//通过递归将所有子节点添加到节点集合中
- }
- }
- #endregion
- #region //生成子结点
- /// <summary>
- /// 递归将子节点添加到当前节点下
- /// </summary>
- /// <param name="nodeList">XmlNodeList的实例</param>
- /// <param name="treeNode">要添加子节点的父节点</param>
- protected void MakeChildNode(XmlNodeList nodeList, TreeNode treeNode)
- {
- XmlElement element = null;
- TreeNode subTreeNode = null;
- //遍历省级节点下的所有市,市辖区
- foreach (XmlNode node in nodeList)
- {
- element = (XmlElement)node;
- subTreeNode = new TreeNode();
- subTreeNode.Text = element.GetAttribute("cAreaName");//在树控件上显示市或市辖区的名称
- subTreeNode.Value = element.GetAttribute("iAreaID");//这里设置节点Value
- subTreeNode.Expanded = true;
- treeNode.ChildNodes.Add(subTreeNode);//将子结点添加到父结点下面
- MakeChildNode(node.ChildNodes, subTreeNode);//递归调用本方法
- }
- }
- #endregion
- protected void Tree_SelectedNodeChanged(object sender, EventArgs e)
- {
- Response.Write("节点的值:" + treeAreaList.SelectedNode.Value + "<br/>");
- Response.Write("节点的路径:" + treeAreaList.SelectedNode.ValuePath + "<br/>");
- Response.Write("节点的数据路径:" + treeAreaList.SelectedNode.DataPath + "<br/>");
- }
- }
XML文件:
- <?xml version="1.0" encoding="utf-8" ?>
- <Area>
- <Province iAreaID ="1" cAreaName="北京市"/>
- <Province iAreaID ="2" cAreaName="上海市"/>
- <Province iAreaID ="3" cAreaName="天津市"/>
- <Province iAreaID ="4" cAreaName="重庆市"/>
- <Province iAreaID ="5" cAreaName="湖北省">
- <City iAreaID ="51" cAreaName="武汉市"/>
- <City iAreaID ="52" cAreaName="黄冈市" />
- <City iAreaID ="53" cAreaName="荆州市"/>
- <City iAreaID ="54" cAreaName="武穴市" />
- <City iAreaID ="55" cAreaName="十堰市"/>
- <City iAreaID ="56" cAreaName="黄石市" />
- </Province>
- <Province iAreaID ="6" cAreaName="河北省">
- <City iAreaID ="61" cAreaName="石家庄市"/>
- <City iAreaID ="62" cAreaName="唐山市" />
- </Province>
- <Province iAreaID ="7" cAreaName="山西省">
- <City iAreaID ="71" cAreaName="太原市" />
- <City iAreaID ="72" cAreaName="大同市" />
- </Province>
- </Area>