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); //跳转页面 } }