roles.ascx.cs

来自「三层架构的.net源码三层架构的.net源码」· CS 代码 · 共 153 行

CS
153
字号
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace MyStarterKit.Portal.Web
{
	/// <summary>
	///	Roles 的摘要说明。
	/// </summary>
	public class Roles : PortalModuleControl
	{
		protected System.Web.UI.WebControls.DataList rolesList;
		protected System.Web.UI.WebControls.LinkButton AddRoleBtn;

		private void Page_Load(object sender, System.EventArgs e)
		{
			// 用户角色为Admins的才能访问该管理模块,否则重定向到EditAccessDenied.aspx
			if (PortalSecurity.IsInRoles("Admins") == false) 
			{
				Response.Redirect("~/Admin/EditAccessDenied.aspx");
			}

			if (Page.IsPostBack == false) 
			{

				BindData();
			}
		}

		/// <summary>
		/// 添加角色信息
		/// </summary>
		/// <param name="Sender"></param>
		/// <param name="e"></param>
		private void AddRole_Click(Object Sender, EventArgs e) 
		{

			// 从HttpContext中获取全局设置对象
			PortalSettings portalSettings = (PortalSettings) Context.Items["PortalSettings"];

			// 添加一个新的角色到数据库中
			RolesDB roles = new RolesDB();
			roles.AddRole(portalSettings.PortalId, "New Role");
        
			// 设置编辑选中项为最后一项,新增的总是最后一项
			rolesList.EditItemIndex = rolesList.Items.Count;

			// 重新绑定
			BindData();
		}

		/// <summary>
		/// 当列表中的按钮事件触发时
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void RolesList_ItemCommand(object sender, DataListCommandEventArgs e) 
		{

			RolesDB roles = new RolesDB();
			int roleId = (int) rolesList.DataKeys[e.Item.ItemIndex];
       
			if (e.CommandName == "edit") 
			{
				//编辑

				rolesList.EditItemIndex = e.Item.ItemIndex;

				// Repopulate the datalist control
				BindData();
			}
			else if (e.CommandName == "apply") 
			{
				// 修改
				// Apply changes
				String _roleName = ((TextBox) e.Item.FindControl("roleName")).Text;
            
				// update database
				roles.UpdateRole(roleId, _roleName);
            
				// Disable editable list item access
				rolesList.EditItemIndex = -1;

				// Repopulate the datalist control
				BindData();
			}
			else if (e.CommandName == "delete") 
			{
				// 删除
				// update database
				roles.DeleteRole(roleId);

				// Ensure that item is not editable
				rolesList.EditItemIndex = -1;

				// Repopulate list
				BindData();
			}
			else if (e.CommandName == "members") 
			{
				// 更改角色用户
				// 先保存角色信息
				String _roleName = ((TextBox) e.Item.FindControl("roleName")).Text;
				roles.UpdateRole(roleId, _roleName);

				// 重定向到角色信息编辑页
				Response.Redirect("~/Admin/SecurityRoles.aspx?roleId=" + roleId + "&rolename=" + _roleName);
			}        
		}
    
		/// <summary>
		/// 初始化控件数据
		/// </summary>
		private void BindData() 
		{

			// 从HttpContext中获取全局设置对象
			PortalSettings portalSettings = (PortalSettings) Context.Items["PortalSettings"];
		
			// 从数据库中读取角色信息
			RolesDB roles = new RolesDB();
        
			rolesList.DataSource = roles.GetPortalRoles(portalSettings.PortalId);
			rolesList.DataBind();
		}

		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		///		设计器支持所需的方法 - 不要使用代码编辑器
		///		修改此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{
			this.rolesList.ItemCommand += new System.Web.UI.WebControls.DataListCommandEventHandler(this.RolesList_ItemCommand);
			this.AddRoleBtn.Click += new System.EventHandler(this.AddRole_Click);
			this.Load += new System.EventHandler(this.Page_Load);
		}
		#endregion
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?