Basf_EProject/EProject/FineUIPro.Web/SysManage/RolePower.aspx.cs

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