【Aspx应用开发平台教程】架构篇:解析微系统构件-数据权限的实现
2010-10-18 10:22
1216 查看
在园中,讲数据权限的文章很多,但大部分文章都是浅尝即止,只讲到数据库设计就没了,往往最关键的部分,如何在项目中实现,讲得很少。今天,我就详细介绍一下在 Aspx应用开发平台 中数据权限的实现方式。
在 Aspx应用开发平台 中,数据权限有四种实现方式:
页面权限;
模块权限;
数据访问权限;
表单权限;
1. 页面权限
在 Aspx应用开发平台 中,页面通过【菜单对象】来进行管理,用户通过点击菜单来访问页面,因此,我们在【菜单】编辑时指定相应的用户角色即可实现权限控制。
数据列权限
void Grid_ItemContentCreated(object sender, GridItemContentCreatedEventArgs e)
{
DataRow row = (DataRow)e.Item.DataItem;
string html = String.Empty;
AspxWork.FormHelper.Popedom.Popedom currentPopedom;
//获得当前操作权限对象
if (isSetPopedom)
{
currentPopedom = popedom;
}
else
{
if (popedomEntity != null)
currentPopedom = new AspxWork.FormHelper.Popedom.Popedom(popedomEntity, WebControlLibrary.Globals.User.UserId, row);
else
currentPopedom = new AspxWork.FormHelper.Popedom.Popedom(tableName, WebControlLibrary.Globals.User.UserId, row);
}
bool isReadOnly = currentPopedom.IsReadonly;
bool isAllowDelete = currentPopedom.IsAllowDelete;
bool isAllowEdit = currentPopedom.IsAllowEdit;
DataStatusEntity dataStatus = StatusHandler.Current.GetDataStatus(TableName, row);
if (dataStatus != null)
{
isAllowDelete = dataStatus.IsAllowDelete && currentPopedom.IsAllowDelete;
isAllowEdit = dataStatus.IsAllowEdit && popedom.IsAllowEdit;
if (!dataStatus.IsAllowEdit || !currentPopedom.IsAllowEdit)
isReadOnly = true;
}
if (currentPopedom.IsAllowView)
{
string key = WebControlLibrary.Url.SetRequestUrl("&Key=" + row[DataEntity.KeyName].ToString(), "Key");
if (this.TableEntity.IsOtherWindow)
{
if (isReadOnly)
html = "<a href=\"" + parameter.ReadonlyUrl + key + "\">查看</a> | ";
else
{
html = "<a href=\"" + parameter.ReadonlyUrl + key + "\">查看</a> | ";
html += "<a href=\"" + parameter.EditUrl + key + "\">编辑</a> | ";
}
}
else
{
if (!isReadOnly)
html = String.Format("<a href=\"javascript:Grid.edit(Grid.getItemFromClientId('0 {0}'));\">", row[DataEntity.KeyName].ToString()) + "编辑</a> | ";
}
}
if (isAllowDelete)
{
html += String.Format("<a href=\"javascript:GridDelete(Grid.getItemFromClientId('0 {0}'))\">删除</a>", row[DataEntity.KeyName].ToString());
}
if (!String.IsNullOrEmpty(html))
e.Content.Controls.Add(new LiteralControl(html));
}
3.表单权限
由于 Aspx应用开发平台 的表单都是通过表单设计器设计构建的,因此,对表单权限的控制就非常简单了,可以用代码直接控制:
//设置表单为只读
this.ControlContainer.IsReadOnly = true;
//设置表单的第二个控件为只读
this.ControlContainer[1].IsReadOnly = true;
也可以通过设计器设置控制,比如 在工作流设置中,设置表单权限:
感兴趣的同仁,可以到我们的网站 http://www.doasp.cn/ 下载学习版,有完整的实现源代码。
在 Aspx应用开发平台 中,数据权限有四种实现方式:
页面权限;
模块权限;
数据访问权限;
表单权限;
1. 页面权限
在 Aspx应用开发平台 中,页面通过【菜单对象】来进行管理,用户通过点击菜单来访问页面,因此,我们在【菜单】编辑时指定相应的用户角色即可实现权限控制。
数据列权限
void Grid_ItemContentCreated(object sender, GridItemContentCreatedEventArgs e)
{
DataRow row = (DataRow)e.Item.DataItem;
string html = String.Empty;
AspxWork.FormHelper.Popedom.Popedom currentPopedom;
//获得当前操作权限对象
if (isSetPopedom)
{
currentPopedom = popedom;
}
else
{
if (popedomEntity != null)
currentPopedom = new AspxWork.FormHelper.Popedom.Popedom(popedomEntity, WebControlLibrary.Globals.User.UserId, row);
else
currentPopedom = new AspxWork.FormHelper.Popedom.Popedom(tableName, WebControlLibrary.Globals.User.UserId, row);
}
bool isReadOnly = currentPopedom.IsReadonly;
bool isAllowDelete = currentPopedom.IsAllowDelete;
bool isAllowEdit = currentPopedom.IsAllowEdit;
DataStatusEntity dataStatus = StatusHandler.Current.GetDataStatus(TableName, row);
if (dataStatus != null)
{
isAllowDelete = dataStatus.IsAllowDelete && currentPopedom.IsAllowDelete;
isAllowEdit = dataStatus.IsAllowEdit && popedom.IsAllowEdit;
if (!dataStatus.IsAllowEdit || !currentPopedom.IsAllowEdit)
isReadOnly = true;
}
if (currentPopedom.IsAllowView)
{
string key = WebControlLibrary.Url.SetRequestUrl("&Key=" + row[DataEntity.KeyName].ToString(), "Key");
if (this.TableEntity.IsOtherWindow)
{
if (isReadOnly)
html = "<a href=\"" + parameter.ReadonlyUrl + key + "\">查看</a> | ";
else
{
html = "<a href=\"" + parameter.ReadonlyUrl + key + "\">查看</a> | ";
html += "<a href=\"" + parameter.EditUrl + key + "\">编辑</a> | ";
}
}
else
{
if (!isReadOnly)
html = String.Format("<a href=\"javascript:Grid.edit(Grid.getItemFromClientId('0 {0}'));\">", row[DataEntity.KeyName].ToString()) + "编辑</a> | ";
}
}
if (isAllowDelete)
{
html += String.Format("<a href=\"javascript:GridDelete(Grid.getItemFromClientId('0 {0}'))\">删除</a>", row[DataEntity.KeyName].ToString());
}
if (!String.IsNullOrEmpty(html))
e.Content.Controls.Add(new LiteralControl(html));
}
3.表单权限
由于 Aspx应用开发平台 的表单都是通过表单设计器设计构建的,因此,对表单权限的控制就非常简单了,可以用代码直接控制:
//设置表单为只读
this.ControlContainer.IsReadOnly = true;
//设置表单的第二个控件为只读
this.ControlContainer[1].IsReadOnly = true;
也可以通过设计器设置控制,比如 在工作流设置中,设置表单权限:
感兴趣的同仁,可以到我们的网站 http://www.doasp.cn/ 下载学习版,有完整的实现源代码。
相关文章推荐
- 【Aspx应用开发平台教程】架构篇:解析微系统构件-传说中的Web表单设计器
- 【Aspx应用开发平台教程】架构篇:微系统构件实例-新闻内容管理构件
- C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 省市区数据权限的实现效果
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 适合大型企业信息化应用使用的角色权限管理体系
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 大数据分页功能改进、数据权限改进
- 中小型企业商业智能平台的开发和实现(数据仓库、BI系统、真实项目实战)
- 中小型企业商业智能平台的开发和实现(数据仓库、BI系统、真实项目实战)
- 本文是笔者根据数据库编程经验,利用C++语言的模板、继承、授权、多态等面向对象特性,借鉴命令模式,实现了对象在关系数据中的存储,降低应用系统与数据库之间的耦合,提高开发效率。
- 实现软件工厂化开发的Aspx应用开发平台发布了
- 如何在应用系统中实现数据权限的控制功能
- WEB应用 信息管理系统 数据分析展示系统 OA办公工作流 快速构建与开发平台
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 数据权限增强、范围权限增强
- 如何在应用系统中实现数据权限的控制功能(2)
- 一步一步的学习android应用开发到系统底层开发之android数据解析JSON篇
- 信息管理系统开发架构 配置实现列表展示分析图形及编辑等 构建信息分析展示平台 C#快速开发架构
- 物联网大数据平台软件开发架构案例解析
- 如何在应用系统中实现数据权限的控制功能
- 通达OA智能开发平台CRM系统 实现数据的自动计算
- 基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 系统架构
- 大数据平台R语言web UI应用架构 设计与开发