gyhlw_dotnet/网站项目/VRS/Management/AdminRoleAuth.aspx.cs

204 lines
7.2 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 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
}
}