`
webcode
  • 浏览: 5940941 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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;
}

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

分享到:
评论

相关推荐

    C#.net_经典编程例子400个

    实例002 菜单动态合并 3&lt;br&gt;实例003 像开始菜单一样漂亮的菜单 4&lt;br&gt;实例004 任务栏托盘菜单 5&lt;br&gt;实例005 可以拉伸的菜单界面 5&lt;br&gt;实例006 菜级联菜单 7&lt;br&gt;1.2 工具栏...

    基于ASP.NET的受权限驱动的多级动态Web菜单系统

    介绍在ASP.NET平台上,受用户权限驱动的多级Web菜单系统的一种实现方案:该菜单系统在一个特别设计的页面对象类中实现,具有传统Windows菜单风格,其所在的页面对象类可用作为其它Web页面对象的基类,可在不需要...

    asp.net知识库

    ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算表达式类的原理及其实现 #实现的18位身份证...

    ASP.Net + access图书管理系统

    系统名称:双鱼林asp.net图书信息管理系统学习版 系统功能: (1)系统分两种身份:管理员和读者,读者可以分为不同的类型,每种类型借书天数和续借天数都不一样! (2)图书管理:添加图书类别,维护图书类别,登记图书...

    ASP.NET的网页代码模型及生命周期

    创建ASP.NET网站,首先需要创建网站,单击【文件】按钮,在下拉菜单中选择【新建网站】选项,单击后会弹出对话框用于ASP.NET网站的创建,如图4-1所示。 图4-1 新建ASP.NET网站 在【位置】选项中,旁边的【下拉菜单...

    ASP.NET 3.5 开发大全

    4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 ...

    ASP.NET3.5从入门到精通

    4.6 ASP.NET 生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET 网站文件...

    ASP升级.net资料大全(c#入门 语言规范 源码教程 学习笔记 技术资料 面试题 asp与.net代码生成器)

    ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他...

    ASP.NET 3.5 开发大全word课件

    4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 ...

    Visual C#.NET程序设计(含书籍和源码) 李兰友 杨晓光 清华出版社,北交出版社

    非常经典的高校C# .net开发教程...10.5 ASP.NET编程应用示例 本章小结 习题 第11章 应用程序设计实践 11.1 电子邮箱程序设计 11.2 Web浏览器程序设计 11.3 彩图处理 11.4 统计图表 11.5 五子棋 本章小结 习题 参考文献

    用ASP.NET加密Cookie数据

    Cookie确实在WEB应用方面为访问者和编程者都提供了方便,然而从安全方面考虑是有问题的,首先,Cookie数据包含在HTTP请求和响应的包头里透明地传递,也就是说聪明的人是能清清楚楚看到这些数据的  。其次,Cookie...

    ASP.NET 3.5 开发大全1-5

    4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 ...

    ASP.NET 3.5 开发大全11-15

    4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 ...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    在ASP.Net课程的一开始,不是直接教学员怎么拖ASP.Net控件进行快速开发,而是通过ashx的模式开发原始的动态网站,让学员明白“请求—处理—响应模型”、“Http协议、Http无状态”、“c#代码渲染生成浏览器端...

    基于ASP.NET在线考试系统设计

    ASP.NET技术为这个系统设计提供了极大的方便。 1.1 系统概述 考试是各高校日常活动的重要部分。在考试系统中,包括试卷创建,题库管理,试卷评阅,平时成绩评定,学生考试,成绩查询,人员管理。下面介绍不同用户可...

    C#与ASP.net结合引用编程实例

    内容索引:C#源码,菜单窗体,引用 C#结合引用编程实例,也就是在C#中的相关数据,应用,站点。

    Visual C#学习笔记光盘

    第五篇介绍了Web编程,主要包括ASP.NET开发,ASP.NET中的控件,ASP.NET中的数据绑定和ASP.NET中的对象;第六篇精选了几个能囊括本书介绍的所有理论的实例,能使读者彻底精通C#编程技术。 本书内容全面,不但适合于...

    Visual.C#.编程精彩百例

    实例87 使用C#与ASP+编写File Uploder 实例88 访问注册表中的硬件信息 实例89 设置“开始”菜单 实例90 在“新建”中添加自己的文件类型 实例91 显示Exchange软件的客户名称 实例92 读取Windows注册表信息 ...

    .net技术资料大全(语言规范 源码教程 学习笔记 技术资料 .net代码生成器)

    ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他...

Global site tag (gtag.js) - Google Analytics