权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

通过添加角色页面,体现一个人的代码水平,思路是否严谨?

2010-09-17 00:23  通用C#系统架构  阅读(2149)  评论(6编辑  收藏  举报
 

 

  1 //-----------------------------------------------------------
  2 // All Rights Reserved , Copyright (C) 2010 ,Jirisoft , Ltd .
  3 //-----------------------------------------------------------
  4 
  5 using System;
  6 using System.Windows.Forms;
  7 
  8 namespace DotNet.WinForm.Role
  9 {
 10     using DotNet.Model;
 11     // 这个按规范的做法,是不能引用的,需要实现瘦客户端(商业逻辑写在服务器上)
 12     // using DotNet.Business;  
 13     using DotNet.Service;
 14     using DotNet.Utilities;
 15     using DotNet.WinForm.Utilities;
 16 
 17     /// <summary>
 18     /// FrmRoleAdd.cs
 19     /// 角色管理 - 添加角色(用户组)管理
 20     ///        
 21     /// 修改记录
 22     /// 
 23     ///     2010.09.16 版本:2.0 JiRiGaLa  多种调用方法的例子说明编写。
 24     ///     2010.03.15 版本:1.8 JiRiGaLa  改进接口、以传递对象方式实现添加功能。
 25     ///     2007.06.05 版本:1.7 JiRiGaLa  整理主键。
 26     ///     2007.06.01 版本:1.3 JiRiGaLa  整体整理主键
 27     ///     2007.05.17 版本:1.2 JiRiGaLa  增加了多国语言功能,调整了细节部分。
 28     ///     2007.05.14 版本:1.1 JiRiGaLa  改进CheckInput(),SaveEntity()。
 29     ///     2007.05.10 版本:1.0 JiRiGaLa  角色添加功能页面编写。
 30     ///        
 31     /// 版本:2.0
 32     ///
 33     /// <author>
 34     ///        <name>JiRiGaLa</name>
 35     ///        <date>2010.09.16</date>
 36     /// </author> 
 37     /// </summary>
 38     public partial class FrmRoleAdd : BaseForm
 39     {
 40         public FrmRoleAdd()
 41         {
 42             InitializeComponent();
 43         }
 44 
 45         #region public override void SetControlState() 设置按钮状态
 46         /// <summary>
 47         /// 设置按钮状态
 48         /// </summary>
 49         public override void SetControlState()
 50         {
 51             // 焦点定位
 52             this.chkEnabled.Checked = this.UserInfo.IsAdministrator;
 53             this.ActiveControl = this.txtRealname;
 54         }
 55         #endregion
 56 
 57         #region public override bool CheckInput() 检查输入的有效性
 58         /// <summary>
 59         /// 检查输入的有效性
 60         /// </summary>
 61         /// <returns>有效</returns>
 62         public override bool CheckInput()
 63         {
 64             bool returnValue = true;
 65             this.txtRealname.Text = this.txtRealname.Text.TrimEnd();
 66             if (string.IsNullOrEmpty(this.txtRealname.Text))
 67             {
 68                 MessageBox.Show(AppMessage.Format(AppMessage.MSG0007, AppMessage.MSG9978), AppMessage.MSG0000, MessageBoxButtons.OK, MessageBoxIcon.Information);
 69                 this.txtRealname.Focus();
 70                 return false;
 71             }
 72             return returnValue;
 73         }
 74         #endregion
 75 
 76         #region private BaseRoleEntity GetEntity()
 77         /// <summary>
 78         /// 读取屏幕数据
 79         /// </summary>
 80         /// <returns>角色实体</returns>
 81         private BaseRoleEntity GetEntity()
 82         {
 83             BaseRoleEntity roleEntity = new BaseRoleEntity();
 84             roleEntity.Realname = this.txtRealname.Text;
 85             roleEntity.Code = this.txtCode.Text;
 86             roleEntity.Description = this.txtDescription.Text;
 87             roleEntity.Enabled = this.chkEnabled.Checked ? 1:0;
 88             roleEntity.Category = this.rbtnRole.Checked ? "Role" : "UserGroup";
 89             roleEntity.AllowDelete = 1;
 90             roleEntity.AllowEdit = 1;
 91             roleEntity.DeleteMark = 0;
 92             return roleEntity;
 93         }
 94         #endregion
 95 
 96         #region public override bool SaveEntity() 保存
 97         /// <summary>
 98         /// 保存
 99         /// </summary>
100         /// <returns>保存成功</returns>
101         public override bool SaveEntity()
102         {
103             bool returnValue = false;
104             string statusCode = string.Empty;
105             string statusMessage = string.Empty;
106             BaseRoleEntity roleEntity = this.GetEntity();
107 
108             // 直接操作数据库,拼接sql语句的。
109 
110             // 有参数化的、能防sql注入攻击等的。
111 
112             // 有数据库访问组建的。
113 
114             // 【入门级别、兴趣爱好者用】
115             // 添加方法一:直接通过添加实体的方式添加数据(入门级的方法,胖客户端,没有逻辑判断的,本地数据库连接)
116             // BaseRoleManager roleManager = new BaseRoleManager(this.UserInfo);
117             // 判断是否存在重复数据
118             // if (!roleManager.Exists(BaseRoleTable.FieldRealname, roleEntity.Realname, BaseRoleTable.FieldDeleteMark, 0))
119             // {
120             //     this.EntityId = roleManager.AddEntity(roleEntity);
121             // }
122             
123             // 【推荐、开发效率高,B/S项目建议写法】
124             // 添加方法二:通过管理器的,有业务逻辑的,判断是否重复等方式添加数据(推荐的做法,胖客户端,最高效的做法,本地数据库连接)
125             // BaseRoleManager roleManager = new BaseRoleManager(this.UserInfo);
126             // this.EntityId = roleManager.Add(roleEntity, out statusCode);
127 
128             // 【直接调用服务的方式,技术要求低,以后有扩展WCF、Remoting、WebService的余地】
129             // 添加方法三:直接调用服务器(胖客户端,商业逻辑在服务层上,本地数据库连接)
130             // RoleService roleService = new RoleService();
131             // this.EntityId = roleService.Add(this.UserInfo, roleEntity, out statusCode, out statusMessage);
132 
133             // 【架构完美、开发成本高,真正分布式运行的推荐写法】
134             // 添加方法四:最标准的通过服务工厂来调用添加方法(可以适应多种运行模式,为了实现完美架构,最完美的架构,服务器上连接数据库,非本地数据库连接)
135             this.EntityId = ServiceManager.Instance.RoleService.Add(UserInfo, roleEntity, out statusCode, out statusMessage);
136             if (statusCode == StatusCode.OKAdd.ToString())
137             {
138                 if (BaseSystemInfo.ShowInformation)
139                 {
140                     // 添加成功,进行提示
141                     MessageBox.Show(statusMessage, AppMessage.MSG0000, MessageBoxButtons.OK, MessageBoxIcon.Information);
142                 }
143                 this.DialogResult = DialogResult.OK;
144                 returnValue = true;
145             }
146             else
147             {
148                 MessageBox.Show(statusMessage, AppMessage.MSG0000, MessageBoxButtons.OK, MessageBoxIcon.Information);
149                 // 是否名称重复了,提高友善性
150                 if (statusCode == StatusCode.ErrorNameExist.ToString())
151                 {
152                     this.txtRealname.SelectAll();
153                     this.txtRealname.Focus();
154                 }
155             }
156             return returnValue;
157         }
158         #endregion
159 
160         private void btnAdd_Click(object sender, EventArgs e)
161         {
162             // 检查输入的有效性
163             if (this.CheckInput())
164             {
165                 // 设置鼠标繁忙状态
166                 this.Cursor = Cursors.WaitCursor;
167                 try
168                 {
169                     if (this.SaveEntity())
170                     {
171                         this.DialogResult = DialogResult.OK;
172                         // 关闭窗口
173                         this.Close();
174                     }
175                 }
176                 catch (Exception ex)
177                 {
178                     this.ProcessException(ex);
179                 }
180                 finally
181                 {
182                     // 设置鼠标默认状态
183                     this.Cursor = Cursors.Default;
184                 }
185             }
186         }
187 
188         private void btnCancel_Click(object sender, EventArgs e)
189         {
190             this.DialogResult = DialogResult.Cancel;
191             this.Close();
192         }
193     }
194 }

 

 

 

 

欢迎高手点评,相应的界面效果如下:

 

 

 

 



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友