FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

FineUIMvc/Core v5.4.0 发布(Core基础版首发!) FineUIPro v5.4.0 发布(十年磨一剑,升级正当时) 欢迎加入【三石和他的朋友们】(基础版下载)

查看: 2577|回复: 2

二封装GRID,给大家提供思路,用起来爽!

[复制链接]
发表于 2018-5-5 15:01:42 | 显示全部楼层 |阅读模式
本帖最后由 yimi00 于 2018-5-5 15:03 编辑

想法:

1.在页面做相关的配置,简单的后台代码实现分页查询,删除等操作
实现:
1.继承FineUIPro.Grid,并扩展部分属性
2.重写翻页事件
3.增加部分使用方法

以下提供简单的封装代码和实现方式!
这里只是为大家提供一个扩展fineUI控件思路,包括扩展属性,扩展方法,重写方法等,可以达到事倍功半的效果。
目前我已经把fineUI的控件全部二次封装了,大大减少了后台代码和逻辑,超爽!

后台代码


前端代码



ExtGrid封装代码:

public class ExtGrid:FineUIPro.Grid
    {
        public ExtGrid()
        {
            AllowPaging = true;
            IsDatabasePaging = true;
            AllowSorting = true;
            PageSize = 20;///默认20条数据,
        }
        /// <summary>
        /// 表名
        /// </summary>
        public string TableName
        {
            get
            {
               return this.Attributes["TableName"]?.ToString();
            }
            set
            {
                this.Attributes["TableName"] = value;
            }
        }
        /// <summary>
        /// 表主键
        /// </summary>
        public string PK
        {
            get
            {
                return this.Attributes["PK"]?.ToString();
            }
            set
            {
                this.Attributes["PK"] = value;
            }
        }
        /// <summary>
        /// 查询条件集合
        /// </summary>
        private List<string> Cds
        {
            get
            {
                ///不知道为啥Attributes无法存放List类型,只能用viewstate
                var obj = ViewState["cds"];
                return obj == null ? null : (List<string>)obj;
            }
            set
            {
                ViewState["cds"] = value;
            }
        }
        /// <summary>
        /// 增加查询条件
        /// </summary>
        /// <param name="cd"></param>
        public void F_AddCds(string cd)
        {
            Cds.Add(cd);
        }
        /// <summary>
        /// 重置条件
        /// </summary>
        public void F_ClearCds()
        {
            Cds = new List<string>();
        }
        /// <summary>
        /// 创建表实例
        /// </summary>
        /// <returns></returns>
        public dynamic F_CreateT()
        {
            dynamic m = null;//这里创建数据库查询示例,按照实际情况进行创建,也可以使用反射
            return m;
        }
        /// <summary>
        /// 分页首次查询使用
        /// </summary>
        /// <param name="FristSelect"></param>
        public void F_ViewData(bool GetPageCount=false,int PageIndex=0)
        {
            dynamic m = F_CreateT(); ///创建表对象实例
            if (Cds.Count == 0)
            {
                Cds.Add("1=1");
            }
            if(GetPageCount)
            {
                ///取查询结果总数
                RecordCount = m.SelectCount(Cds.ToArray());
            }
            DataTable dt = m.SelectBy(SortField, SortDirection, DataKeyNames[0], PageIndex, PageSize, Cds.ToArray());
            this.DataSource = dt;
            this.DataBind();
        }
        /// <summary>
        /// 重写分页查询事件
        /// </summary>
        /// <param name="e"></param>
        protected override void OnPageIndexChange(GridPageEventArgs e)
        {
            F_ViewData(false,e.NewPageIndex);
            base.OnPageIndexChange(e);
        }
        /// <summary>
        /// 删除选中行
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public void F_DeleteSelectRow(int i)
        {
            dynamic m = F_CreateT(); ///创建表对象实例
            //删除操作,这里不写啦
        }
    }


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2018-5-10 11:27:23 | 显示全部楼层
凑个热闹

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2018-5-10 11:30:17 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|FineUI 官方论坛 ( 皖ICP备13005369号-1 )

GMT+8, 2019-6-19 20:49 , Processed in 0.109152 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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