292 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			292 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
using BLL;
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Data;
 | 
						|
using System.Data.SqlClient;
 | 
						|
using System.Linq;
 | 
						|
using System.Web.UI.WebControls;
 | 
						|
 | 
						|
namespace FineUIPro.Web.common.SysManage
 | 
						|
{
 | 
						|
    public partial class RolePower : PageBase
 | 
						|
    {
 | 
						|
        #region 加载
 | 
						|
        protected void Page_Load(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if (!IsPostBack)
 | 
						|
            {
 | 
						|
                InitTreeMenu();
 | 
						|
            }
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region 查询
 | 
						|
        protected void TextBox_TextChanged(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            this.InitTreeMenu();
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region 加载树
 | 
						|
        private void InitTreeMenu()
 | 
						|
        {
 | 
						|
            this.tvRole.Nodes.Clear();
 | 
						|
 | 
						|
            TreeNode rootRole = new TreeNode();
 | 
						|
           // if (this.GetLanguage == "zh-CN")
 | 
						|
           // {
 | 
						|
           //     rootRole.Text = "角色";
 | 
						|
           // }
 | 
						|
           //else
 | 
						|
           // { 
 | 
						|
                rootRole.Text = "Roles";
 | 
						|
            //}
 | 
						|
            rootRole.NodeID = "0";
 | 
						|
            rootRole.Expanded = true;
 | 
						|
            this.tvRole.Nodes.Add(rootRole);
 | 
						|
            BoundTree(rootRole.Nodes);
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 遍历节点
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="nodes"></param>
 | 
						|
        /// <param name="parentId"></param>
 | 
						|
        /// <param name="type"></param>
 | 
						|
        private void BoundTree(TreeNodeCollection nodes)
 | 
						|
        {
 | 
						|
            List<Model.Sys_Role> roles = BLL.Sys_RoleService.GetRoleList();
 | 
						|
            if (!string.IsNullOrEmpty(this.txtRoleName.Text))
 | 
						|
            {
 | 
						|
                roles = roles.Where(e => e.RoleName.Contains(this.txtRoleName.Text.Trim())).ToList();
 | 
						|
            }
 | 
						|
            if (roles.Count() > 0)
 | 
						|
            {
 | 
						|
                TreeNode tn = null;
 | 
						|
                foreach (var q in roles)
 | 
						|
                {
 | 
						|
                    tn = new TreeNode();
 | 
						|
                    tn.Text = q.RoleName;
 | 
						|
                    tn.NodeID = q.RoleId;
 | 
						|
                    tn.ToolTip = q.Def;
 | 
						|
                    tn.EnableClickEvent = true;
 | 
						|
                    nodes.Add(tn);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Tree点击事件
 | 
						|
        /// <summary>
 | 
						|
        /// 选择角色事件
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="sender"></param>
 | 
						|
        /// <param name="e"></param>
 | 
						|
        protected void tvRole_NodeCommand(object sender, TreeCommandEventArgs e)
 | 
						|
        {
 | 
						|
            var role = BLL.Sys_RoleService.GetRole(this.tvRole.SelectedNodeID);
 | 
						|
            if (role != null)
 | 
						|
            {
 | 
						|
                this.lblRoleName.Text = "Role:" + role.RoleName;
 | 
						|
            }
 | 
						|
            this.BindGrid();
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region BindGrid
 | 
						|
 | 
						|
        private void BindGrid()
 | 
						|
        {
 | 
						|
            string strSql = "";
 | 
						|
            //string strSql = @"SELECT MenuId,MenuName,SuperMenu FROM dbo.Sys_Menu
 | 
						|
            //                  ORDER BY SortIndex";
 | 
						|
 | 
						|
            //if (this.GetLanguage == "en-US")
 | 
						|
            //{
 | 
						|
                strSql = @"SELECT MenuId,MenuEnName AS MenuName,SuperMenu FROM dbo.Sys_Menu                              
 | 
						|
                              ORDER BY SortIndex";
 | 
						|
            //}
 | 
						|
            List<SqlParameter> parms = new List<SqlParameter>();
 | 
						|
            //parms.Add(new SqlParameter("@MenuModule", this.drpMenuModule.SelectedValue));
 | 
						|
            //SqlParameter[] parameter = parms.ToArray();
 | 
						|
 | 
						|
            DataTable dt = SQLHelper.GetDataTableRunText(strSql, null);
 | 
						|
 | 
						|
            Grid1.DataSource = dt;
 | 
						|
            Grid1.DataBind();
 | 
						|
 | 
						|
        }
 | 
						|
        #endregion        
 | 
						|
 | 
						|
        #region Grid点击事件
 | 
						|
        protected void Grid1_RowDataBound(object sender, GridRowEventArgs e)
 | 
						|
        {
 | 
						|
            System.Web.UI.WebControls.CheckBoxList cblButtonPower = (System.Web.UI.WebControls.CheckBoxList)(this.Grid1.Rows[e.RowIndex].FindControl("cblButtonPower"));
 | 
						|
            string menuId = e.Row.RowID;
 | 
						|
            var menu = from x in Funs.DB.Sys_Menu where x.MenuId == menuId select x;
 | 
						|
            if (menu != null && menu.Count() > 0)
 | 
						|
            {
 | 
						|
                var b = from x in Funs.DB.Sys_ButtonToMenu where x.MenuId == menu.First().MenuId orderby x.SortIndex select x;
 | 
						|
                if (b != null && b.Count() > 0)
 | 
						|
                {
 | 
						|
                    //cblButtonPower.DataTextField = "ButtonName";
 | 
						|
                    //if (this.GetLanguage == "en-US")
 | 
						|
                    //{
 | 
						|
                    cblButtonPower.DataTextField = "ButtonEnName";
 | 
						|
                    //}
 | 
						|
                    cblButtonPower.DataValueField = "ButtonToMenuId";
 | 
						|
                    cblButtonPower.DataSource = b.ToList();
 | 
						|
                    cblButtonPower.DataBind();
 | 
						|
                }
 | 
						|
                if (tvRole.SelectedNode != null && tvRole.SelectedNodeID != "0")
 | 
						|
                {
 | 
						|
                    //                    var power = from x in Funs.DB.Sys_RolePower
 | 
						|
                    //                                where x.MenuId == menu.First().MenuId
 | 
						|
                    //&& x.RoleId == tvRole.SelectedNodeID
 | 
						|
                    //                                select x;
 | 
						|
                    //                    if (power != null && power.Count() > 0)
 | 
						|
                    //                    {
 | 
						|
                    //                        for (int i = 0; i < cblButtonPower.Items.Count; i++)
 | 
						|
                    //                        {
 | 
						|
                    //                            if (power.First().ButtonToMenus.Contains(cblButtonPower.Items[i].Value))
 | 
						|
                    //                            {
 | 
						|
                    //                                cblButtonPower.Items[i].Selected = true;
 | 
						|
                    //                            }
 | 
						|
                    //                        }
 | 
						|
                    //                    }
 | 
						|
 | 
						|
                    var power = (from x in Funs.DB.Sys_ButtonPower
 | 
						|
                                 where x.MenuId == menu.First().MenuId
 | 
						|
                                 && x.RoleId == tvRole.SelectedNodeID
 | 
						|
                                 select x).ToList();
 | 
						|
                    for (int i = 0; i < power.Count; i++)
 | 
						|
                    {
 | 
						|
                        for (int j = 0; j < cblButtonPower.Items.Count; j++)
 | 
						|
                        {
 | 
						|
                            if (power[i].ButtonToMenuId == cblButtonPower.Items[j].Value)
 | 
						|
                            {
 | 
						|
                                cblButtonPower.Items[j].Selected = true;
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region 保存
 | 
						|
        /// <summary>
 | 
						|
        /// 保存按钮事件
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="sender"></param>
 | 
						|
        /// <param name="e"></param>
 | 
						|
        protected void btnSave_Click(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if (tvRole.SelectedNode == null || tvRole.SelectedNodeID == "0")
 | 
						|
            {
 | 
						|
                Alert.ShowInTop("Please select a role!", MessageBoxIcon.Warning);
 | 
						|
                return;
 | 
						|
            }
 | 
						|
            //Model.EProjectDB db = Funs.DB;
 | 
						|
            //var power = from x in db.Sys_RolePower
 | 
						|
            //            join y in db.Sys_Menu on x.MenuId equals y.MenuId
 | 
						|
            //            where x.RoleId == tvRole.SelectedNodeID
 | 
						|
            //            select x;
 | 
						|
            //db.Sys_RolePower.DeleteAllOnSubmit(power);
 | 
						|
            //db.SubmitChanges();
 | 
						|
 | 
						|
            //for (int i = 0; i < this.Grid1.Rows.Count; i++)
 | 
						|
            //{
 | 
						|
            //    string buttonToMenuIds = string.Empty;
 | 
						|
            //    System.Web.UI.WebControls.CheckBoxList cblButtonPower = (System.Web.UI.WebControls.CheckBoxList)(this.Grid1.Rows[i].FindControl("cblButtonPower"));
 | 
						|
            //    if (cblButtonPower.SelectedItem != null)
 | 
						|
            //    {
 | 
						|
            //        foreach (System.Web.UI.WebControls.ListItem item in cblButtonPower.Items)
 | 
						|
            //        {
 | 
						|
            //            if (item.Selected)
 | 
						|
            //            {
 | 
						|
            //                buttonToMenuIds += item.Value + ",";
 | 
						|
            //            }
 | 
						|
            //        }
 | 
						|
            //        if (!string.IsNullOrEmpty(buttonToMenuIds))
 | 
						|
            //        {
 | 
						|
            //            buttonToMenuIds = buttonToMenuIds.Substring(0, buttonToMenuIds.LastIndexOf(","));
 | 
						|
            //        }
 | 
						|
 | 
						|
            //        string newKeyID = SQLHelper.GetNewID(typeof(Model.Sys_RolePower));
 | 
						|
            //        Model.Sys_RolePower newPower = new Model.Sys_RolePower();
 | 
						|
            //        newPower.RolePowerId = newKeyID;
 | 
						|
            //        newPower.RoleId = tvRole.SelectedNodeID;
 | 
						|
            //        newPower.MenuId = Grid1.DataKeys[i][0].ToString();
 | 
						|
            //        newPower.ButtonToMenus = buttonToMenuIds;
 | 
						|
 | 
						|
            //        db.Sys_RolePower.InsertOnSubmit(newPower);
 | 
						|
            //        db.SubmitChanges();
 | 
						|
 | 
						|
            //        string supMenuId = Grid1.DataKeys[i][1].ToString();
 | 
						|
            //        InsertSuperMenu(supMenuId, tvRole.SelectedNodeID);
 | 
						|
            //    }
 | 
						|
            //}
 | 
						|
 | 
						|
 | 
						|
            var power = from x in Funs.DB.Sys_ButtonPower
 | 
						|
                        join y in Funs.DB.Sys_Menu on x.MenuId equals y.MenuId
 | 
						|
                        where x.RoleId == tvRole.SelectedNodeID
 | 
						|
                        select x;
 | 
						|
            Funs.DB.Sys_ButtonPower.DeleteAllOnSubmit(power);
 | 
						|
            Funs.DB.SubmitChanges();
 | 
						|
            for (int i = 0; i < this.Grid1.Rows.Count; i++)
 | 
						|
            {
 | 
						|
                System.Web.UI.WebControls.CheckBoxList cblButtonPower = (System.Web.UI.WebControls.CheckBoxList)(this.Grid1.Rows[i].FindControl("cblButtonPower"));
 | 
						|
                if (cblButtonPower.SelectedItem != null)
 | 
						|
                {
 | 
						|
                    foreach (System.Web.UI.WebControls.ListItem item in cblButtonPower.Items)
 | 
						|
                    {
 | 
						|
                        if (item.Selected)
 | 
						|
                        {
 | 
						|
                            Model.Sys_ButtonPower newPower = new Model.Sys_ButtonPower();
 | 
						|
                            newPower.ButtonPowerID = SQLHelper.GetNewID(typeof(Model.Sys_ButtonPower));
 | 
						|
                            newPower.RoleId = tvRole.SelectedNodeID;
 | 
						|
                            newPower.MenuId = Grid1.DataKeys[i][0].ToString();
 | 
						|
                            newPower.ButtonToMenuId = item.Value;
 | 
						|
 | 
						|
                            Funs.DB.Sys_ButtonPower.InsertOnSubmit(newPower);
 | 
						|
                            Funs.DB.SubmitChanges();
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    string supMenuId = Grid1.DataKeys[i][1].ToString();
 | 
						|
                    InsertSuperMenu(supMenuId, tvRole.SelectedNodeID);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            ShowNotify("Role permissions set successfully!");
 | 
						|
            BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Role permission Settings");
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
        private void InsertSuperMenu(string supMenuId, string roleId)
 | 
						|
        {
 | 
						|
            Model.EProjectDB db = Funs.DB;
 | 
						|
            var menuPower = from x in db.Sys_ButtonPower where x.RoleId == roleId && x.MenuId == supMenuId select x;
 | 
						|
            if (menuPower.Count() == 0 && supMenuId != "0")
 | 
						|
            {
 | 
						|
                string newKeyID = SQLHelper.GetNewID(typeof(Model.Sys_ButtonPower));
 | 
						|
                Model.Sys_ButtonPower newPower = new Model.Sys_ButtonPower();
 | 
						|
                newPower.ButtonPowerID = newKeyID;
 | 
						|
                newPower.RoleId = roleId;
 | 
						|
                newPower.MenuId = supMenuId;
 | 
						|
 | 
						|
                db.Sys_ButtonPower.InsertOnSubmit(newPower);
 | 
						|
                db.SubmitChanges();
 | 
						|
 | 
						|
                var menu = from x in db.Sys_Menu where x.MenuId == supMenuId select x;
 | 
						|
                if (menu.Count() > 0)
 | 
						|
                {
 | 
						|
                    InsertSuperMenu(menu.First().SuperMenu, roleId);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
} |