大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码.docx

上传人:b****2 文档编号:17664509 上传时间:2023-04-24 格式:DOCX 页数:15 大小:18.58KB
下载 相关 举报
大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码.docx_第1页
第1页 / 共15页
大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码.docx_第2页
第2页 / 共15页
大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码.docx_第3页
第3页 / 共15页
大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码.docx_第4页
第4页 / 共15页
大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码.docx

《大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码.docx》由会员分享,可在线阅读,更多相关《大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码.docx(15页珍藏版)》请在冰豆网上搜索。

大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码.docx

大湿教我写程序5之按钮权限控制篇附上权限系统图片素材和按钮控制前端源码

大湿教我写程序(5)之按钮权限控制篇(附上权限系统图片素材和按钮控制前端源码)

引言

“大雄,晚饭你吃什么?

外卖我帮你一起叫。

“点个毛的外卖呀,上次你不是接了个万把块的私单么,说了请我吃饭的。

别又装不记得啊,也别学老板,沙县小吃大酒店打发不了我。

“别提了,单子刚接的时候让我先做,现在弄完了一堆东西让我改,每个按钮都要用权限控制太坑爹了。

一共也才给了我3000块首付款。

“就那点功能还不简单。

“你能帮我做?

“先把饭请了再说吧,到时候看心情。

“好吧,我先出点血,没给我弄好把你吃进去的全挤出来,翔都挤出来。

一小时后

“饭也吃了,开工吧。

“上次教过你做菜单权限的,实现方法是做一个角色菜单对应关系的中间表,那么按钮也一样啊。

你做个按钮与角色对应关系表,就可以将指定的按钮分配给角色,登陆过后就从数据库中取出权限,放入缓存或者session都可以判断”

“哦,如果用户角色有那个权限我就让显示按钮,没权限就直接不显示了,可是我怎么动态控制按钮的显示呢?

“脑子怎么还是这么死板呢?

以前教你做菜单导航的时候不都是动态加载的么,一样的拼接html代码。

详细设计

“哦哦,昨晚睡太晚,把这个给忘了,别说了我自己来做吧”

开工了,听大湿这么一说,这个动态控制按钮权限就跟动态菜单权限非常一样了。

分成三步:

1、建立按钮基本信息:

定义按钮大小、显示图片、显示文字。

表结构如下:

 

CREATETABLE[dbo].[BPMS_Button](

[ButtonId][varchar](50)NOTNULL,

[FullName][varchar](50)NOTNULL,

[Img][varchar](50)NULL,

[Event][varchar](200)NULL,

[Control_ID][varchar](50)NOTNULL,

[Category][varchar](50)NOTNULL,

[Split][int]NULL,

[Description][varchar](200)NULL,

[Enabled][int]NULL,

[SortCode][int]NULL,

[DeleteMark][int]NULL,

[CreateDate][datetime]NULL,

[CreateUserId][varchar](50)NULL,

[CreateUserName][varchar](50)NULL,

[ModifyDate][datetime]NULL,

[ModifyUserId][varchar](50)NULL,

[ModifyUserName][varchar](50)NULL,

CONSTRAINT[PK_BPMS_BUTTON]PRIMARYKEYNONCLUSTERED

[ButtonId]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]GOSETANSI_PADDINGOFF

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'按钮主键',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'ButtonId'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'按钮名称',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'FullName'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'按钮图标',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'Img'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'按钮事件',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'Event'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'控件ID',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'Control_ID'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'分类',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'Category'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'是否分开',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'Split'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'描述',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'Description'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'有效:

1-有效,0-无效',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'Enabled'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'排序吗',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'SortCode'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'删除标记:

1-正常,0-删除',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'DeleteMark'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'创建时间',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'CreateDate'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'创建用户主键',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'CreateUserId'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'创建用户',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'CreateUserName'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'修改时间',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'ModifyDate'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'修改用户主键',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'ModifyUserId'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'修改用户',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button',@level2type=N'COLUMN',@level2name=N'ModifyUserName'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'操作按钮',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_Button'

GO

 

重点字段说明:

按钮名称:

按钮对应的名称

按钮图标:

显示的都是图片按钮,动态拼按html代码时根据这个字段去找到对应的图标

按钮事件:

按钮要响应的JS事件

控件ID:

控件对应的ID

分类:

哪一类的按钮,菜单栏还是工具栏

排序码:

按钮排第几个

前台界面设计:

2、建立按钮与模块对应关系:

即当前页面上有哪些按钮是可以显示的,显示的前后顺序。

表结构:

 

CREATETABLE[dbo].[BPMS_SysMenuButton](

[SysMenuButtonId][varchar](50)NOTNULL,

[MenuId][varchar](50)NULL,

[ButtonId][varchar](50)NULL,

[CreateDate][datetime]NULL,

[CreateUserId][varchar](50)NULL,

[CreateUserName][varchar](50)NULL,

[SortCode][int]NOTNULL,

CONSTRAINT[PK_BPMS_SYSMENUBUTTON]PRIMARYKEYNONCLUSTERED

[SysMenuButtonId]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]GOSETANSI_PADDINGOFF

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'菜单导航按钮关系主键',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_SysMenuButton',@level2type=N'COLUMN',@level2name=N'SysMenuButtonId'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'菜单主键',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_SysMenuButton',@level2type=N'COLUMN',@level2name=N'MenuId'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'按钮主键',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_SysMenuButton',@level2type=N'COLUMN',@level2name=N'ButtonId'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'发生时间',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_SysMenuButton',@level2type=N'COLUMN',@level2name=N'CreateDate'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'创建用户主键',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_SysMenuButton',@level2type=N'COLUMN',@level2name=N'CreateUserId'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'创建用户',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_SysMenuButton',@level2type=N'COLUMN',@level2name=N'CreateUserName'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'排序码',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_SysMenuButton',@level2type=N'COLUMN',@level2name=N'SortCode'

GOEXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'菜单导航操作按钮关系表',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'BPMS_SysMenuButton'

GO

 

重点字段说明:

菜单主键:

对应菜单的主键

按钮主键:

按钮的主键

排序码:

按钮排在第几个这里当你在前台勾选一个按钮,后台就记录下了菜单和这个按钮的对应关系

到了菜单权限分配界面,根据选定的菜单ID从数据库中获取含该菜单主键的所有有效记录,再根据按钮表拼接html代码,前端将有关按钮全部显示出来

界面设计:

这里讲一下勾选的按钮,按钮按下去之后就会变颜色,并且上面出现一个小勾。

这其实是两个div合成的。

如何加载这些按钮请见如下动态拼接html代码

 

publicvoidInitButton()

{

DataTabledt=bpms_sysmenubuttonibll.GetListWhere(_Menu_Id);

if(DataTableHelper.IsExistRows(dt))

{

for(inti=0;i<dt.Rows.Count;i++)

{

stringcheckbuttonNo="checkbuttonNo";

stringtriangleNo="triangleNo";

if(CommonHelper.GetDateTime(dt.Rows[i]["IsExist"])<DateTime.Now)

{

checkbuttonNo="checkbuttonOk";

triangleNo="triangleOk";

}

if(dt.Rows[i]["Category"].ToString()=="工具栏")

{

htmlButtontoolbar.Append("<divtitle=\""+dt.Rows[i]["Description"]+"\"class=\""+checkbuttonNo+"panelcheck\">");

htmlButtontoolbar.Append("<divid=\""+dt.Rows[i]["ButtonId"]+"\"class=\"checktext\">");

htmlButtontoolbar.Append("<imgsrc=\"../../Themes/Images/16/"+dt.Rows[i]["Img"]+"\"/>"+dt.Rows[i]["FullName"]+"");

htmlButtontoolbar.Append("</div>");

htmlButtontoolbar.Append("<divclass=\""+triangleNo+"\"></div>");

htmlButtontoolbar.Append("</div>");}

elseif(dt.Rows[i]["Category"].ToString()=="右击菜单栏")

{

htmlButtonApplication.Append("<divtitle=\""+dt.Rows[i]["Description"]+"\"class=\""+checkbuttonNo+"panelcheck\">");

htmlButtonApplication.Append("<divid=\""+dt.Rows[i]["ButtonId"]+"\"class=\"checktext\">");

htmlButtonApplication.Append("<imgsrc=\"../../Themes/Images/16/"+dt.Rows[i]["Img"]+"\"/>"+dt.Rows[i]["FullName"]+"");

htmlButtonApplication.Append("</div>");

htmlButtonApplication.Append("<divclass=\""+triangleNo+"\"></div>");

htmlButtonApplication.Append("</div>");

}

}

}

}

 

通过以上这段代码就可以看得很明白,按钮由div组成,首先从数据库中加载菜单对应的记录。

根据记录中的按钮ID去获取按钮表中的基础数据,然后拼接html代码,就可以得到一个个按钮,这里需要注意的一点是:

已分配的按钮和未分配的按钮样式是不一样的,所以在拼接的时候进行一个判断,然后根据结果去加载不同的CSS样式。

下面是CSS样式

 

/*自定义复选框*/

.checkbuttonNo{

margin:

5px;

width:

auto;

border:

solid3px#ccc;

h

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1