在软件系统中如果牵扯到多个用户,或者说存在多个角色权限的时候就需要在不同的用户登陆以后,显示不同的操作菜单。比如:经理需要审批,管理员备份数据等常见的不同操作。这个时候可以使用不同的菜单页面实现,不过权限的动态更改会受限制。所以可以使用一个菜单页面,上面放置一个树控件(Menu控件也可以,下文以TreeView控件为例),便于显示菜单的层次关系。比如:资产管理存在资产新增,资产调拨等子菜单。树控件正好可以对应这种层次感。

然后将树控件绑定XML数据源,配置TreeNode数据绑定。将相应的绑定对应XML中的属性名。当更改权限的时候可以更改对应的XML文件,不同权限的用户登陆时候可以选择载入不同的XML文件。

简单示例:

ASPX中代码:

<asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1">
        <DataBindings>
            <asp:TreeNodeBinding DataMember="siteMapNode" NavigateUrlField="url" TargetField="target"
                TextField="title" />
        </DataBindings>
    </asp:TreeView>
    <asp:XmlDataSource ID="XmlDataSource1" runat="server"></asp:XmlDataSource>

.CS中代码:

 if (!Page.IsPostBack)//当页面首次加载时
        {

             对应的权限选择来载入不同的XML,只供参考,实际使用需要有判断依据。
             this.XmlDataSource1.DataFile = "~/TreeView_Admin.xml";
           // this.XmlDataSource1.DataFile = "~/TreeView_ChairMan.xml"

 }

XML中文件格式,这个对应的就是   <asp:TreeNodeBinding DataMember="siteMapNode" NavigateUrlField="url" TargetField="target"
                TextField="title" />

注意两者的对应和XML中的层次关系:

<?xml version="1.0" encoding="utf-8" ?>
<siteMapNode  title="固定资产管理系统" url="#" description="" target="" p_w_picpath="~/p_w_picpaths/desk.gif">
 <siteMapNode  title="系统管理" url="#" description="" target="" p_w_picpath="~/p_w_picpaths/tree.gif">
  <siteMapNode title=" 员工管理" url="~/SystemManage/EmpManage.aspx" description=""  target="_parent" p_w_picpath="~/p_w_picpaths/tree.gif"/>
 </siteMapNode>
 <siteMapNode  title="基础信息" url="#" description="" target="" p_w_picpath="~/p_w_picpaths/tree.gif">
  <siteMapNode title=" 机构管理" url="~/BaseManage/OrganManage.aspx" description=""  target="mainFrame" p_w_picpath="~/p_w_picpaths/tree.gif"/>
  <siteMapNode title=" 使用地管理" url="~/BaseManage/BranchManage.aspx" description=""  target="mainFrame" p_w_picpath="~/p_w_picpaths/tree.gif"/>
  <siteMapNode title=" 类别管理" url="~/BaseManage/TypeManage.aspx" description=""  target="mainFrame" p_w_picpath="~/p_w_picpaths/tree.gif"/>
 </siteMapNode>
</siteMapNode>
2个XML格式一样,只是配置的菜单名和URL指向不同。这样就可以方便的对权限菜单进行配置了。