treeview与xml文件操做

xml配置文件以下(URL地址并未所有填写,主要用于测试):
<?xml version="1.0" encoding="utf-8" ?>
<menu>
 
  <住房信息 >
    <住房管理>~/Web/Default.aspx</住房管理>
    <职工住房信息 >~/Web/Default2.aspx</职工住房信息 >
    <职工货币化管理 > </职工货币化管理 >
    <职工货币化查看 >  </职工货币化查看>
  </住房信息>
 
  <家具数据管理>
    <家具数据维护></家具数据维护>
  </家具数据管理>
   
  <系统文章管理>
    <系统文章维护>  </系统文章维护>
  </系统文章管理>
  <教职工信息>
    <教职工信息维护></教职工信息维护>
  </教职工信息>
 
  <系统操做>
    <退出系统></退出系统>
  </系统操做>
 
</menu>
页面绑定数据代码:
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="XDS" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged" NodeIndent="8">
   <ParentNodeStyle BackColor="White" ChildNodesPadding="5px" Font-Bold="False" Font-Italic="False" />
   <RootNodeStyle Font-Bold="True" ForeColor="#000040" Font-Size="13pt" />
   <NodeStyle Font-Bold="False" />
   <LeafNodeStyle Font-Bold="False" Font-Size="11pt" ForeColor="Teal" />
</asp:TreeView>
<asp:XmlDataSource ID="XDS" runat="server" DataFile="~/Web/Master/gp_menu.xml" XPath="/menu/*">
</asp:XmlDataSource>
后台的单击代码:
   protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        XmlDocument XDoc = new XmlDocument();         XDoc.Load(Server.MapPath("~/Web/Master/gp_menu.xml"));  //得到menu配置文件         XmlNodeList XNodeList = XDoc.DocumentElement.ChildNodes; //得到该文件跟节点的全部子节点         List<string> list = new List<string>();         //定义一个list用来保存父节点         XmlNode XNode;         int i;                                   //简单计数功能                                for (i = 0; i < XNodeList.Count; i++ )    //遍历全部根结点的子节点也就是菜单中的父节点         {             XNode = XNodeList.Item(i);             list.Add(XNode.Name);                    //将节点的名字加入到list中         }                   TreeNode sltNode = TreeView1.SelectedNode;         bool isParent = false;         //查看选择节点是否为父节点         for (i = 0; i < list.Count; i++ )         {             if (list[i] == sltNode.Text)             {                 sltNode.ToggleExpandState();            //选择节点为父节点时,使该节点在展开和折叠状态转换                 isParent = true;                   //标记该节点为父节点                 sltNode.Selected = false;              //若是不设置为false 当连续点击同一个父节点时不会触发该函数                 break;             }         }         //选择结点为子节点                 if (false == isParent)         {             string dpath = "";             string url = "";             dpath = sltNode.DataPath;         //得到选择结点的路径                                        // eg. /*[position()=1]/*[position()=2]/*[position()=1] 选择了第二个父节点的第一个子节点             dpath = dpath.Substring(30, 1); //得到 第二层路径的深度值(从1开始计数的)             XNode = XNodeList.Item(Convert.ToInt32(dpath) - 1);             url = XNode[sltNode.Text].InnerText;    //得到选择节点的值(即页面地址)             Response.Redirect(url);                //跳转页面         }              }
相关文章
相关标签/搜索