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);                //跳轉頁面         }              }
相關文章
相關標籤/搜索