<menu>
<住房信息 >
<住房管理>~/Web/Default.aspx</住房管理>
<职工住房信息 >~/Web/Default2.aspx</职工住房信息 >
<职工货币化管理 > </职工货币化管理 >
<职工货币化查看 > </职工货币化查看>
</住房信息>
<家具数据管理>
<家具数据维护></家具数据维护>
</家具数据管理>
<系统文章管理>
<系统文章维护> </系统文章维护>
</系统文章管理>
<教职工信息维护></教职工信息维护>
</教职工信息>
<系统操作>
<退出系统></退出系统>
</系统操作>
</menu>
<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:XmlDataSource ID="XDS" runat="server" DataFile="~/Web/Master/gp_menu.xml" XPath="/menu/*">
</asp:XmlDataSource>
{
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); //跳转页面
}
}