204 lines
7.2 KiB
C#
204 lines
7.2 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Web;
|
||
using System.Web.UI;
|
||
using System.Web.UI.WebControls;
|
||
using Telerik.Web.UI;
|
||
|
||
namespace VRS.Management
|
||
{
|
||
public partial class AdminRoleAuth : BasePage
|
||
{
|
||
|
||
DataService.BLL.admin_log log = new DataService.BLL.admin_log();
|
||
DataService.BLL.admin_auth bll_auth = new DataService.BLL.admin_auth();
|
||
DataService.BLL.admin_role bll_role = new DataService.BLL.admin_role();
|
||
DataService.BLL.admin_config bll_config = new DataService.BLL.admin_config();
|
||
DataService.BLL.admin_role_auth bll_role_auth = new DataService.BLL.admin_role_auth();
|
||
protected override void Page_Load(object sender, EventArgs e)
|
||
{
|
||
base.Page_Load(sender, e);
|
||
if (!IsPostBack)
|
||
{
|
||
var role_id = Request.Params["Id"];
|
||
if (string.IsNullOrEmpty(role_id))
|
||
{
|
||
RadAjaxManager1.Alert("请选择一个角色!");
|
||
return;
|
||
}
|
||
|
||
var config = bll_config.GetModelList(" is_use =1 ").FirstOrDefault();
|
||
var app_key = config.app_key;
|
||
|
||
var auth_list = bll_role_auth.GetModelList(" role_id ='" + role_id + "' ");
|
||
|
||
//根节点:父节点值为0 或空值
|
||
var model = bll_auth.GetModelList(" (parent_id ='0' or parent_id ='' or parent_id is null) and app_key='" + app_key + "'").FirstOrDefault();
|
||
/*
|
||
if (null == model)
|
||
{
|
||
RadAjaxManager1.ResponseScripts.Add("CloseAndRebind();");
|
||
return;
|
||
}
|
||
*/
|
||
var root = new RadTreeNode();
|
||
root.Value = model.auth_id;
|
||
root.Text = model.auth_name;
|
||
var exists = auth_list.FirstOrDefault(s => s.auth_id == model.auth_id);
|
||
if (null != exists)
|
||
{
|
||
root.Checked = true;
|
||
}
|
||
else
|
||
{
|
||
root.Checked = false;
|
||
}
|
||
var list = bll_auth.GetModelList("app_key = '" + app_key + "' ");
|
||
BindTree(list, root, auth_list);
|
||
RadTreeView1.Nodes.Add(root);
|
||
RadTreeView1.ExpandAllNodes();
|
||
|
||
var model_role = bll_role.GetModel(role_id);
|
||
span_name.InnerHtml = model_role.role_name;
|
||
|
||
//DataLoad(); BindToIEnumerable();
|
||
}
|
||
}
|
||
|
||
protected void btnSelect_Click(object sender, EventArgs e)
|
||
{
|
||
var count = RadTreeView1.CheckedNodes.Count;
|
||
/*
|
||
if (count <= 0)
|
||
{
|
||
RadAjaxManager1.Alert("请选择相应的权限!");
|
||
return;
|
||
}*/
|
||
var role_id = Request.Params["Id"];
|
||
if (string.IsNullOrEmpty(role_id))
|
||
{
|
||
RadAjaxManager1.Alert("请选择一个角色!");
|
||
return;
|
||
}
|
||
List<DataService.Model.admin_role_auth> list = new List<DataService.Model.admin_role_auth>();
|
||
for (int i = 0; i < RadTreeView1.CheckedNodes.Count; i++)
|
||
{
|
||
var node = RadTreeView1.CheckedNodes[i];
|
||
var item = new DataService.Model.admin_role_auth();
|
||
item.auth_id = node.Value;
|
||
item.auth_name = node.Text;
|
||
list.Add(item);
|
||
}
|
||
|
||
var ret = bll_role_auth.SetRoleAuth(role_id, list);
|
||
if (ret > 0)
|
||
{
|
||
RadAjaxManager1.ResponseScripts.Add("alert('权限配置成功!');CloseAndRebind();");
|
||
}
|
||
else
|
||
{
|
||
RadAjaxManager1.Alert("权限配置失败!");
|
||
}
|
||
}
|
||
|
||
|
||
///建立树的递归方法
|
||
/// <param name="list_admin_auth">权限列表</param>
|
||
/// <param name="treeNode">树节点</param>
|
||
public static void BindTree(List<DataService.Model.admin_auth> list_admin_auth, RadTreeNode treeNode, List<DataService.Model.admin_role_auth> list_role_auth)
|
||
{
|
||
var list = list_admin_auth.Where(s => s.parent_id == treeNode.Value).ToList();
|
||
foreach (var item in list)
|
||
{
|
||
var tree = new RadTreeNode();
|
||
tree.Value = item.auth_id;
|
||
|
||
tree.Text = item.auth_name;
|
||
tree.ToolTip = item.r1;
|
||
var exists = list_role_auth.FirstOrDefault(s => s.auth_id == item.auth_id);
|
||
if (null != exists)
|
||
{
|
||
tree.Checked = true;
|
||
}
|
||
else
|
||
{
|
||
tree.Checked = false;
|
||
}
|
||
//递归性质,函数内调用自身函数
|
||
BindTree(list_admin_auth, tree, list_role_auth);
|
||
//递归结束的终点条件
|
||
treeNode.Nodes.Add(tree);
|
||
}
|
||
}
|
||
protected void AjaxManager_AjaxRequest(object sender, AjaxRequestEventArgs e)
|
||
{
|
||
//DataLoad();
|
||
}
|
||
protected void DataLoad()
|
||
{
|
||
var list = bll_auth.GetModelList("");
|
||
RadTreeView1.DataFieldID = "auth_id";
|
||
RadTreeView1.DataFieldParentID = "parent_id";
|
||
RadTreeView1.DataTextField = "auth_name";
|
||
RadTreeView1.DataSource = list;
|
||
RadTreeView1.DataBind();
|
||
}
|
||
#region test methods
|
||
private void BindToIEnumerable()
|
||
{
|
||
List<SiteDataItem> siteData = new List<SiteDataItem>();
|
||
|
||
siteData.Add(new SiteDataItem(1, 0, "Products"));
|
||
siteData.Add(new SiteDataItem(2, 1, "Telerik UI for ASP.NET Ajax"));
|
||
siteData.Add(new SiteDataItem(3, 1, "Telerik UI for Silverlight"));
|
||
siteData.Add(new SiteDataItem(4, 2, "RadGrid"));
|
||
siteData.Add(new SiteDataItem(5, 2, "RadScheduler"));
|
||
siteData.Add(new SiteDataItem(6, 2, "RadEditor"));
|
||
siteData.Add(new SiteDataItem(7, 3, "RadGrid Silverlight"));
|
||
siteData.Add(new SiteDataItem(8, 3, "RadMenu Silverlight"));
|
||
siteData.Add(new SiteDataItem(9, 3, "RadEditor Silverlight"));
|
||
|
||
|
||
RadTreeView1.DataTextField = "Text";
|
||
RadTreeView1.DataFieldID = "ID";
|
||
RadTreeView1.DataFieldParentID = "ParentID";
|
||
RadTreeView1.DataSource = siteData;
|
||
RadTreeView1.DataBind();
|
||
}
|
||
|
||
internal class SiteDataItem
|
||
{
|
||
private int id;
|
||
private int parentId;
|
||
private string text;
|
||
|
||
public int ID
|
||
{
|
||
get { return id; }
|
||
set { id = value; }
|
||
}
|
||
|
||
public int ParentID
|
||
{
|
||
get { return parentId; }
|
||
set { parentId = value; }
|
||
}
|
||
|
||
public string Text
|
||
{
|
||
get { return text; }
|
||
set { text = value; }
|
||
}
|
||
|
||
public SiteDataItem(int id, int parentId, string text)
|
||
{
|
||
this.id = id;
|
||
this.parentId = parentId;
|
||
this.text = text;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
}
|
||
} |