在軟件系統中如果牽扯到多個用戶,或者說存在多個角色權限的時候就需要在不同的用戶登陸以後,顯示不同的操作菜單。比如:經理需要審批,管理員備份數據等常見的不同操作。這個時候可以使用不同的菜單頁面實現,不過權限的動態更改會受限制。所以可以使用一個菜單頁面,上面放置一個樹控件(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="" image="~/images/desk.gif">
<siteMapNode title="系統管理" url="#" description="" target="" image="~/images/tree.gif">
<siteMapNode title=" 員工管理" url="~/SystemManage/EmpManage.aspx" description="" target="_parent" image="~/images/tree.gif"/>
</siteMapNode>
<siteMapNode title="基礎信息" url="#" description="" target="" image="~/images/tree.gif">
<siteMapNode title=" 機構管理" url="~/BaseManage/OrganManage.aspx" description="" target="mainFrame" image="~/images/tree.gif"/>
<siteMapNode title=" 使用地管理" url="~/BaseManage/BranchManage.aspx" description="" target="mainFrame" image="~/images/tree.gif"/>
<siteMapNode title=" 類別管理" url="~/BaseManage/TypeManage.aspx" description="" target="mainFrame" image="~/images/tree.gif"/>
</siteMapNode>
</siteMapNode>
2個XML格式一樣,只是配置的菜單名和URL指向不同。這樣就可以方便的對權限菜單進行配置了。