FineUI 官方论坛

标题: 二封装GRID,给大家提供思路,用起来爽! [打印本页]

作者: yimi00    时间: 2018-5-5 15:01
标题: 二封装GRID,给大家提供思路,用起来爽!
本帖最后由 yimi00 于 2018-5-5 15:03 编辑

想法:

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

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

后台代码
[attach]11174[/attach]

前端代码
[attach]11175[/attach]


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(); ///创建表对象实例
            //删除操作,这里不写啦
        }
    }



作者: zy32002    时间: 2018-5-10 11:27
凑个热闹[attach]11189[/attach]
作者: zy32002    时间: 2018-5-10 11:30
https://www.jianshu.com/p/0c0ce0877df7




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4