如何采用easyui tree编写简单角色权限代码
首先每个管理员得对应一个角色:
而角色可以操作多个栏目,这种情况下我们可以采用tree多选的方式:
在页面上js代码:
1 2 3 4 5 6 7 8 | $( '#Permission' ).dialog({ title: '栏目权限' , closed: false }); $( '#rtt' ).tree({ url: 'ashx/RoleService.ashx?action=RoleTree&Rid=' + raw.ID, method: 'get' , animate: true , checkbox: true }); $( '#Rid' ).val(raw.ID); |
用了一个dialog弹出进行实现ashx中传入一个角色编号
C#代码为:
1 2 3 4 5 6 7 8 9 10 | case "RoleTree" : string Rid = context.Request.Params[ "Rid" ]; int Roleid = Convert.ToInt32(Rid); List<tree> treelist = getChildren( "Angel_Admin_Navigation" , "0" , Roleid); Newtonsoft.Json.Converters.IsoDateTimeConverter timeConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter(); timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd" ; string ResJsonStr = JsonConvert.SerializeObject(treelist, Formatting.Indented, timeConverter); context.Response.ContentType = "text/plain" ; context.Response.Clear(); context.Response.Write(ResJsonStr); |
case哪里是一个action操作参数 这个就不用我说了吧!
现在我们来看看输出tree数据怎么写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | //Tree递归调用 public List<tree> getChildren( string tableName, string fid, int RoleId) { DBHelperSql Dbhelper = new DBHelperSql(); List<tree> list = new List<tree>(); DataTable dt = Dbhelper.GetDataTable(tableName, " ParentId='" + fid + "' " ); if (dt.Rows.Count > 0) { for ( int i = 0; i < dt.Rows.Count; i++) { tree tree = new tree(); tree.id = dt.Rows[i][ "NavName" ].ToString(); tree.text = dt.Rows[i][ "TitleName" ].ToString(); if (OperateBll.IsRoleoperateDataExist(dt.Rows[i][ "NavName" ].ToString(),RoleId)){ tree.@ checked = true ; } tree.children = getChildren(tableName, dt.Rows[i][ "id" ].ToString(),RoleId); list.Add(tree); } } else list = null ; return list; } //tree属性 public class tree { public string id { get ; set ; } public string text { get ; set ; } public bool @ checked { get ; set ; } public List<tree> children { get ; set ; } } |
一个递归的方法就实现了 看着是不是很简单。上面输出json的部分调用这个方法即可
最终显示页面如图:
有时候easyui用习惯了真的很不错,以上代码希望能帮到需要的同学。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端