Basf_FCL/FCL/FineUIPro.Web/SysManage/RolePower.aspx.cs

234 lines
8.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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_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;
}
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
}
}