http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 14540|回复: 2

[教程] 【通用权限管理系统】菜单管理页面分页逻辑处理

[复制链接]
发表于 2017-12-20 20:25:02 | 显示全部楼层 |阅读模式
【通用权限管理系统】菜单管理页面分页逻辑处理


导读部分






教程部分


本帖子主要讲解菜单管理页面中的分页列表实现方法,即下图内容:
菜单管理.png

1. 页面加载时,定义公用变量 如下所示:
分页条数,总菜单书,页码,实例化Sys_MenuBLL等
[C#] 纯文本查看 复制代码
/// <summary>[/font][/font][/align]        /// 每页记录数
        /// </summary>
        public const int PAGESIZE = 15;
        /// <summary>
        /// 总记录数
        /// </summary>
        protected int TotalCount { get; set; }

        protected int pageIndex = 1;

        private Sys_MenuBLL sys_menuBll = new Sys_MenuBLL();
        protected string searchType = string.Empty, searchText = string.Empty;
        protected List<Sys_MenuInfo> list = new List<Sys_MenuInfo>();

2. 在Page_Load中,绑定页面加载第一页数据,以及其他逻辑,如删除等
逻辑代码如下:
[C#] 纯文本查看 复制代码
protected void Page_Load(object sender, EventArgs e) {
            var action = InputHelper.GetInputString(Request["action"]);
            pageIndex = InputHelper.GetInputInt(this.Request.Params["pageIndex"]);
            searchType = this.Request.Params["searchType"];
            searchText = this.Request.Params["searchText"];

            if (string.IsNullOrWhiteSpace(action))
            {
                // 初始化 绑定数据
                BindData();
            }
            else if ("del" == action)
            {
                DoDel();
            }
            else
            {
                this.Response.Clear();
                this.Response.ContentType = "text/plain";
                var responseText = HandleAction(action);
                this.Response.Write(responseText);
                this.Response.End();
            }
        }

在此处调用了两个页面自定义方法,BindData  绑定数据,DoDel 删除菜单, HandleAction 根据不同的action执行不同操作,此处主要实现了分页的代码逻辑

BindData   主要实现了获取分页列表数据,其中包含了查询条件的获取,组织,以及列表数据的获取
[C#] 纯文本查看 复制代码
/// <summary>
        /// 绑定数据
        /// </summary>
        private void BindData()
        {
            //组织查询条件
            string query = string.Empty;
            if (!string.IsNullOrWhiteSpace(searchType) && !string.IsNullOrWhiteSpace(searchText))
            {
                switch (searchType)
                {
                    case "1":
                        query = string.Format(" MenuID = {0}", searchText);
                        break;
                    case "2":
                        query = string.Format(" MenuName = '{0}'", searchText);
                        break;
                    case "3":
                        query = string.Format(" ParentID = {0} OR MenuID = {0}", searchText);
                        break;
                    case "4":
                        query = string.Format(" ParentID = (SELECT MenuID FROM dbo.Sys_Menu WHERE MenuName = '{0}'and ParentID=0)  OR dbo.Sys_Menu.MenuName = '{0}'", searchText);
                        break;
                }
            }
            if (pageIndex <= 0) { pageIndex = 1; }
            int total = 0;
            try
            {
                list = sys_menuBll.GetListPage("*", query, "MenuID", pageIndex, PAGESIZE, out total);
            }
            catch
            {
                list = new List<Sys_MenuInfo>();
            }
            TotalCount = total;
        }

3. 分页逻辑主要在HandleAction
逻辑如下:
[C#] 纯文本查看 复制代码
private string HandleAction(string action)
        {
            switch (action)
            {
                case "page":
                    return DoPage();
                default:
                    return "{\"reCode\":-1,\"msg\":\"Not Found.\"}";
            }
        }

DoPage方法实现如下:
[C#] 纯文本查看 复制代码
private string DoPage()
        {
            BindData();

            if (list != null && list.Count > 0)
            {
                var responseJsonStr = JsonHelper.json(list);

                return "{\"reCode\":1,\"Info\":" + responseJsonStr + ",\"total\":" + TotalCount + ",\"msg\":\"Success.\"}";
            }
            else
            {
                return "{\"reCode\":-1,\"msg\":\"暂无数据.\"}";
            }
        }
此方法主要还是调取了BindData中数据,将获取的分页数据,以json的形式返回,让页面进行处理

此处分页的逻辑均已处理完,剩下的为页面处理,在稍后的帖子中会有体现哈,感觉大家的关注哦


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2017-12-20 20:30:52 | 显示全部楼层
加油,给自己点赞哈
 楼主| 发表于 2018-1-4 21:31:48 | 显示全部楼层
欢迎大家提建议,共同进步
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-6-1 22:59

© 2014-2021

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