234 lines
8.6 KiB
C#
234 lines
8.6 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_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
|
||
}
|
||
} |