苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V1.3) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper万能框架(V2.3-含.netcore) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V1.9) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3484|回复: 3

[教程] 【分布式系统框架教程】-权限列表

[复制链接]
发表于 2015-1-21 20:43:42 | 显示全部楼层 |阅读模式
【分布式系统框架教程】-权限列表

导读部分



1.【分布式系统框架】教程目录帖http://www.sufeinet.com/thread-10624-1-1.html

教程部分


   
由于权限的数据结构关系,因为有个层级关系,父类子类的这种关系,所以在提取的时候先将所有的父类列表提取过来。下面是后台代码:
[C#] 纯文本查看 复制代码
 funclist = bll.FindTopFuncList(pgindex, pageSize, out totalcounts);

这个funclist用到了分页,我处理的是提取的只是parentId=0的数据,也就是所有的父类权限。
下面是前台页面的提取循环代码:
[HTML] 纯文本查看 复制代码
 <table width="100%" border="0" id="listShow" cellpadding="4" cellspacing="1" bgcolor="#464646"
                                            class="newfont03">
                                            <tr bgcolor="#EEEEEE">
                                            <td width="5%" height="30">ID</td>
                                            <td width="5%">功能名称</td>
                                            <td width="5%">状态</td>   
                                            <td width="12%">操作</td>
                                            </tr>
                                            <% if (funclist.Any())
                                               {//循环之前首先将所有权限提取出来,供一下每次循环父类集合时调用,避免重复访问数据库
                                                   var funcalllist = bll.FindALL();
                                                   foreach (var f in funclist)
                                                   {
                                                   %>
                                            <tr bgcolor="#ffffcc">
                                            <td height="30"><%=f.ID%></td>
                                            <td>
                                            <a href="javascript:;" showid="<%=f.ID %>" class="btlink">
                                            <%=f.FunctionName%>
                                            </a>
                                            </td>
                                            <td><input type="checkbox" checked="<%=f.IsEnable%>"  disabled="disabled"/></td>
                                            <td><a href="AddFunction.aspx?id=<%=f.ID %>">编辑|</a> 
                                               <a href="#" id="<%=f.ID %>" class="del">删除</a></td>
                                                 
                                            </tr>
                                                    <%

                                                        var list = funcalllist.Where(func => func.ParentId == f.ID);
                                                        if (list.Any())
                                                        {
                                                            foreach (var s in list)
                                                            {          
                                                     %>
                                                              <tr bgcolor="#FFFFFF"  class="show<%=f.ID %>">
                                                              <td height="30"><%=s.ID%></td>
                                                              <td><%=s.FunctionName%></td>
                                                              <td><input type="checkbox" checked="<%=s.IsEnable%>"  disabled="disabled"/></td>
                                                              <td><a href="AddFunction.aspx?id=<%=s.ID %>">编辑|</a> 
                                                              <a href="#" id="<%=s.ID %>" class="del">删除</a></td>
                                                              </tr>

                                            <%               }
                                                        }
                                                   }
                                               }%>
                                        </table>

    首先循环外层父类,每次循环时将该父类下的子类权限提取出来并显示出来,这样就可以显示出我们需要的层级关系了,很一目了然。    平常我们做循环的时候可能是每次循环父类的时候,都通过这个父类id从数据库中去取一下这个父类id下的所有子类。为了减少和数据库之间的多次访问,  在循环这个父类列表之前我用了一个findAll方法将所有的列表全部都提取过来了,这样做的好处是只需要提取一次,也就是说只需访问数据库一次,每次循环只是从这个列表中来进行linq查询,因为这个列表提取过来了是放在内存里面,在内存里查询可以说速度上快了很多,而且避免了重复的多次去访问数据库。
   得到的效果图如下:
QQ截图20150121204458.png


发表于 2015-1-21 21:50:03 | 显示全部楼层
发表于 2015-1-21 23:33:03 | 显示全部楼层
发表于 2018-12-8 23:36:39 来自移动端 | 显示全部楼层
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1)

GMT+8, 2019-6-19 03:48

© 2017-2018

快速回复 返回顶部 返回列表