没有合适的资源?快使用搜索试试~ 我知道了~
首先,创建数据库表的代码如下: 无限级树的数据库表代码 代码如下: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[work_sysmenu]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1) drop table [dbo].[work_sysmenu] GO CREATE TABLE [dbo].[work_sysmenu] ( [flowid] [int] IDENTITY (1, 1) NOT NULL , [menu_title] [varchar]
资源推荐
资源详情
资源评论
asp.net(C#)生成无限级别菜单生成无限级别菜单
首先,创建数据库表的代码如下:
无限级树的数据库表代码
代码如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[work_sysmenu]’) and OBJECTPROPERTY(id,
N’IsUserTable’) = 1)
drop table [dbo].[work_sysmenu]
GO
CREATE TABLE [dbo].[work_sysmenu] (
[flowid] [int] IDENTITY (1, 1) NOT NULL ,
[menu_title] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[menu_value] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[menu_url] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[menu_parent] [int] NULL ,
[menu_role] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[menu_meno]
COLLATE Chinese_PRC_CI_AS NULL ,
[isvalid] [int] NULL ,
[menu_order] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
其中,menu_parent为菜单的级别代码,最顶级为0,其他级别代码为上级菜单的flowid。
ASP.NET中使用导航中的Menu控件作为菜单。
首先需要将级别为0的顶级菜单添加到Menu中,代码如下:
代码如下:
/// <summary>
/// 根据用户权限获取系统菜单
/// </summary>
private void GetSysMenu()
{
string str = “select * from work_sysmenu where dbo.GetCharCount(menu_role,'” + this.roleid +”‘)=1 and isvalid=1 order by
menu_order”;
DataSet ds= sysSqlRunner.getDataset(str);
DataRow[] drRoot = ds.Tables[0].Select(“menu_parent=0”);
//循环生成父菜单
foreach (DataRow dr in drRoot)
{
MenuItem mi = new MenuItem();
mi.Text = dr[“menu_title”].ToString();
mi.Value = dr[“menu_value”].ToString();
//mi.NavigateUrl = dr[“menu_url”].ToString();
mi.Selectable = false;
mainMenu.Items.Add(mi);
//递归算法生成所有级别的下级子菜单
CreateMenu(ds.Tables[0], dr[“flowid”].ToString(), mi);
}
}
上面的代码中的sysSqlRunner.getDataset是我自用的一个数据持久层框架内的方法,用来执行一段SQL并返回Dataset,这个
可以根据自己的需要来使用不同的方法。另外有一条SQL语句中包含一个我自己写的自定义函数dbo.GetCharCount,作用是
获取一个字符串中,某个字符存在的个数。
代码如下:
Create function GetCharCount(@target varchar(100),@sear varchar(1))
returns int
as
begin
declare @charcount int
select @charcount=(len(@target)-len(replace(@target,@sear,”)))
return @charcount
end
下面为生成下级无级树的方法代码:
代码如下:
资源评论
weixin_38650629
- 粉丝: 4
- 资源: 897
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功