asp.net下论坛中动态菜单的编程(C#)

在VS2008前台中加入MEnu控制,设置属性代码如下:

<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" DynamicEnableDefaultPopOutImage="False" DynamicVerticalOffset="10" Height="24px" Width="126px">
<StaticSelectedStyle HorizontalPadding="0px" />
<StaticMenuItemStyle HorizontalPadding="5px" ForeColor="#3C3C3C" />
<DynamicMenuStyle HorizontalPadding="0px" />
<DynamicMenuItemStyle HorizontalPadding="0px" ItemSpacing="3px" ForeColor="#D96C01" />
<StaticMenuStyle HorizontalPadding="0px" />
<DynamicHoverStyle ForeColor="#3D68A3" />
<StaticHoverStyle ForeColor="#D96C01" />
</asp:Menu>

在后台编写代码:因为这是一个图书管理的系统的菜单,所以把代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class header : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//判断用户登录类型。
if (Session["entryType"] == "reader")
{
//调用自定义方法,绑定读者的Menu菜单
menuReader();
}
else
{
//调用自定义方法,绑定管理员的Menu菜单
menuManage();
}

}

}
/// <summary>
/// 自定义方法用来绑定管理员的Menu菜单
/// </summary>
protected void menuManage()
{
//创建SQL语句,该语句用来查询管理员所拥有的权限
string sqlSel = "select * from tb_admSet where userName='" + Session["userName"] + "'";
//调用公共类中getRow方法,并接收该方法返回的对象
SqlDataReader sdr = dataOperate.getRow(sqlSel);
//读取一条记录
sdr.Read();
//创建MenuItem对象
MenuItem miIndex = new MenuItem();
//设置菜单项显示文本
miIndex.Text = "首页";
//设置跳转路径
miIndex.NavigateUrl = "../index.aspx";
//添加到Menu菜单栏中
this.Menu1.Items.Add(miIndex);
//判断是否拥有系统设置中的权限
if (dataOperate.isAdm(sdr["systemSet"].ToString()))
{
//创建SQL语句,查询指定的权限信息
string sqlSelName = "select * from tb_menuInfo where menuName='systemSet' ";
//调用自定义方法添加权限信息到Menu菜单栏中
biandMenu(sqlSelName, "systemSet");
}
if (dataOperate.isAdm(sdr["readerManage"].ToString()))
{
string sqlSelName = "select * from tb_menuInfo where menuName='readerManage' ";
biandMenu(sqlSelName, "readerManage");
}
if (dataOperate.isAdm(sdr["bookManage"].ToString()))
{
string sqlSelName = "select * from tb_menuInfo where menuName='bookManage' ";
biandMenu(sqlSelName, "bookManage");
}
if (dataOperate.isAdm(sdr["bookBorrow"].ToString()))
{
string sqlSelName = "select * from tb_menuInfo where menuName='bookBorrow' ";
biandMenu(sqlSelName, "bookBorrow");
}
if (dataOperate.isAdm(sdr["systemSearch"].ToString()))
{
string sqlSelName = "select * from tb_menuInfo where menuName='systemSearch' ";
biandMenu(sqlSelName, "systemSearch");
}
//创建MenuItem对象
MenuItem miPass = new MenuItem();
//设置菜单项显示文本
miPass.Text = "修改密码";
//设置跳转路径
miPass.NavigateUrl = "../newPass.aspx";
//添加到Menu菜单栏中
this.Menu1.Items.Add(miPass);
//创建MenuItem对象
MenuItem miExit = new MenuItem();
//设置菜单项显示文本
miExit.Text = "退出系统";
//设置跳转路径
miExit.NavigateUrl = "../entry.aspx";
//添加到Menu菜单栏中
this.Menu1.Items.Add(miExit);

}
/// <summary>
/// 自定义方法,创建权限菜单栏
/// </summary>
/// <param name="strSql">字符串变量,表示SQL语句</param>
/// <param name="strField">字符串变量,表示字段名</param>
public void biandMenu(string strSql, string strField)
{
//创建SQL语句,该语句用来查询指定用户的权限信息
string sqlSel = "select * from tb_admSet where userName='" + Session["userName"] + "'";
//调用公共类中的getRow方法并接收该方法返回的对象
SqlDataReader sdr = dataOperate.getRow(sqlSel);
//读取一条记录
sdr.Read();
//获取指定字段的记录,并将该记录通过使用“,”分隔填充到字符串数组中
string[] strAdm = sdr[strField].ToString().Split(',');
//创建一个整型变量
int count = 0;
//遍历字符串数组,使用变量记录数组中有几个“1”
foreach (string admS in strAdm)
{
if (admS == "1")
{
count += 1;
}
}
//调用公共类中的getDataset方法并接收该方法返回的对象
DataSet ds = dataOperate.getDataset(strSql);
//创建MenuItem对象数组
MenuItem[] mi = new MenuItem[count + 1];
//使用for循环实例MenuItem对象
for (int i = 0; i < count + 1; i++)
{
mi[i] = new MenuItem();
}
//设置级菜单项的文本
mi[0].Text = ds.Tables[0].Rows[0][2].ToString();

int miTag = 0;
//循环数组
for (int j = 0; j < strAdm.Length; j++)
{
if (strAdm[j] == "1")
{
//设置变量自增
miTag += 1;
//设置级菜单项的文本
mi[miTag].Text = ds.Tables[0].Rows[j + 1][2].ToString();
//设置级菜单项的跳转路径
mi[miTag].NavigateUrl = ds.Tables[0].Rows[j + 1][3].ToString();
//添加到父菜单项中
mi[0].ChildItems.Add(mi[miTag]);
}

}
//添加到Menu菜单栏中
this.Menu1.Items.Add(mi[0]);
}

/// <summary>
/// 绑定读者菜单
/// </summary>
public void menuReader()
{
//创建MenuItem对象
MenuItem miIndex = new MenuItem();
//设置显示文本
miIndex.Text = "首页";
//设置跳转路径
miIndex.NavigateUrl = "../index.aspx";
//添加到Menu菜单栏中
this.Menu1.Items.Add(miIndex);
//设置系统查询权限菜单栏
MenuItem miSearch = new MenuItem();
miSearch.Text = "系统查询";
MenuItem miBookInfo = new MenuItem();
miBookInfo.Text = "图书档案查询";
miBookInfo.NavigateUrl = "~/systemSearch/bookInfoSearch.aspx";
MenuItem miBookBorrow = new MenuItem();
miBookBorrow.Text = "图书借阅查询";
miBookBorrow.NavigateUrl = "~/systemSearch/bookBorrowSearch.aspx";
miSearch.ChildItems.Add(miBookInfo);
miSearch.ChildItems.Add(miBookBorrow);
this.Menu1.Items.Add(miSearch);
//设置密码修改菜单栏
MenuItem miPass = new MenuItem();
miPass.Text = "修改密码";
miPass.NavigateUrl = "../newPass.aspx";
this.Menu1.Items.Add(miPass);
//设置退出系统菜单栏
MenuItem miExit = new MenuItem();
miExit.Text = "退出系统";
miExit.NavigateUrl = "../entry.aspx";
this.Menu1.Items.Add(miExit);

}


}

数据库中的表

上面调用的方法: public static bool isAdm(string str)
{
//将字符串以“,”分隔填充到数组中
string[] strAdm = str.Split(',');
//遍历数组判断是否拥有“1”
foreach (string admValue in strAdm)
{
if (admValue == "1")
{
return true;
break;
}
}
return false;
}

好了,基本上就完成了,下面是效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值