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 list = new List(); 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("权限配置失败!"); } } ///建立树的递归方法 /// 权限列表 /// 树节点 public static void BindTree(List list_admin_auth, RadTreeNode treeNode, List 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 siteData = new List(); 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 } }