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); } /// /// 遍历节点 /// /// /// /// private void BoundTree(TreeNodeCollection nodes) { List 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点击事件 /// /// 选择角色事件 /// /// /// 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 parms = new List(); //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_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 保存 /// /// 保存按钮事件 /// /// /// protected void btnSave_Click(object sender, EventArgs e) { if (tvRole.SelectedNode == null || tvRole.SelectedNodeID == "0") { Alert.ShowInTop("Please select a role!", MessageBoxIcon.Warning); return; } 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.FCLDB 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 } }