EasyUi 动态列

最近,接到一个需求,按部门做了个数据统计,原以为是个很普通的需求,具体实现的过程中,却发现,这个部门是不固定的,因为部门有可能被增、删、改。

所以,对应的列也是不固定的,这下可难倒我了。

不过,在我锲而不舍,刻苦钻研,外加百度、360搜索的帮助下,总算有了点思路。

具体的思路是这样子的:

1,将JS定义的Columns放在后台定义,在后台时融合部门列表,再返回到前端。

2,在后台对第一列的部门赋值,并返回Json。

有了思路,实现起来就不难了。

具体做法:1,JS获取列定义

        function GetData() {
            $.post("/DataManage/GetReportColumn", {}, function (txt) {
                if (txt != "") {
                    var columnsSetting = eval(txt);

                    initParam.url = ‘/DataManage/GetInputReportByDeptList‘;
                    initParam.queryParams = {IsEntire: "N"};
                    initParam.columns = columnsSetting;
                    //initParam.toolbar = builderAddEditDelToolbar(‘部门管理‘, "/DeptManage");
                    builderDatagrid(initParam);
                }
            })
        }

2,再根据列定义方法,去实现DataGrid

3,方法GetReportColumn的相关代码如下:

        public ActionResult GetReportColumn()
        {
            IList<DepartmentModel> deptList = GetDeptList();

            List<EasyUiColumnModel> columns = new List<EasyUiColumnModel>();
            columns.Add(new EasyUiColumnModel { field = "BatchNo", title = "批次号", width = 250, sortable = true });
            for (int i = 1; i < deptList.Count + 1; i++)
            {
                columns.Add(new EasyUiColumnModel { field = "Dept" + i, title = deptList[i - 1].Name, width = 100 });
            }

            var cols = JsonExtension.JsonSerializer(columns);
            return Content(cols);
        }

4,方法GetInputReportByDeptList的相关代码如下:

        /// <summary>
        /// 统计报表Json
        /// </summary>
        /// <returns></returns>
        public ActionResult GetInputReportByDeptList()
        {
            String isEntire = RequestExtension.GetForm<String>("IsEntire", "");

            String batchNo = RequestExtension.GetForm<String>("BatchNo", "");
            int currentPageIndex = RequestExtension.GetForm<int>("page", 0);
            int pagesize = RequestExtension.GetForm<int>("rows", 0);
            String sort = RequestExtension.GetForm<String>("sort", "");
            String order = RequestExtension.GetForm<String>("order", "");

            string json = RequestExtension.GetFormData();
            json = HttpUtility.UrlDecode(json);
            BatchInfoModel viewModel = JsonExtension.JsDeserialize<BatchInfoModel>(json);

            Pagination pagin = new Pagination
            {
                CurrentPageIndex = currentPageIndex,
                PageSize = pagesize,
                OrderBy = String.IsNullOrEmpty(sort) ? "" : String.Concat(sort + " " + order)
            };

            BatchInfoModel batchInfoCondition = new BatchInfoModel();
            batchInfoCondition.IsEntire = isEntire;
            if (viewModel != null)
            {
                batchInfoCondition.SourceNo = viewModel.SourceNo;
                batchInfoCondition.StartDate = viewModel.StartDate;
                batchInfoCondition.EndDate = viewModel.EndDate;
                batchInfoCondition.IsEntire = viewModel.IsEntire;
                batchInfoCondition.BatchNo = viewModel.BatchNo;
            }
            KeyValuePair<Pagination, IList<BatchInfoModel>> batchInfoList = batchInfoRepository.BatchInfoPagination(pagin, batchInfoCondition);

            IList<DepartmentModel> deptList = GetDeptList();

            foreach (var item in batchInfoList.Value)
            {
                for (int i = 0; i < deptList.Count; i++)
                {
                    //判断该部门的成员是否有导入Citas
                    var downInfo = downLoadInfoRepository.GetDownLoadInfoByBatchIDAndDeptID(item.BatchNo, deptList[i].ID);
                    if (downInfo != null)
                    {
                        String importTime = "-" + downInfo.CreateTime.ToString("yyMMdd");

                        if (i == 0) item.Dept1 = "Y" + importTime;
                        if (i == 1) item.Dept2 = "Y" + importTime;
                        if (i == 2) item.Dept3 = "Y" + importTime;
                        if (i == 3) item.Dept4 = "Y" + importTime;
                        if (i == 4) item.Dept5 = "Y" + importTime;
                        if (i == 5) item.Dept6 = "Y" + importTime;
                        if (i == 6) item.Dept7 = "Y" + importTime;
                        if (i == 7) item.Dept8 = "Y" + importTime;
                        if (i == 8) item.Dept9 = "Y" + importTime;
                        if (i == 9) item.Dept10 = "Y" + importTime;
                        if (i == 10) item.Dept11 = "Y" + importTime;
                        if (i == 11) item.Dept12 = "Y" + importTime;
                        if (i == 12) item.Dept13 = "Y" + importTime;
                        if (i == 13) item.Dept14 = "Y" + importTime;
                        if (i == 14) item.Dept15 = "Y" + importTime;
                        if (i == 15) item.Dept16 = "Y" + importTime;
                        if (i == 16) item.Dept17 = "Y" + importTime;
                        if (i == 17) item.Dept18 = "Y" + importTime;
                        if (i == 18) item.Dept19 = "Y" + importTime;
                        if (i == 19) item.Dept20 = "Y" + importTime;
                        if (i == 20) item.Dept21 = "Y" + importTime;
                        if (i == 21) item.Dept22 = "Y" + importTime;
                        if (i == 22) item.Dept23 = "Y" + importTime;
                        if (i == 23) item.Dept24 = "Y" + importTime;
                        if (i == 24) item.Dept25 = "Y" + importTime;
                        if (i == 25) item.Dept26 = "Y" + importTime;
                        if (i == 26) item.Dept27 = "Y" + importTime;
                        if (i == 27) item.Dept28 = "Y" + importTime;
                        if (i == 28) item.Dept29 = "Y" + importTime;
                        if (i == 29) item.Dept30 = "Y" + importTime;
                    }
                }
            }
            return JsonExtension.JsonPagination(batchInfoList.Value, pagin.CurrentPageIndex, pagin.PageSize, batchInfoList.Key.TotalItemCount);
        }

So,实现的效果如下,这样随便他增、删、改部门(目前只支持30个部门以下),我的统计报表不会错。

EasyUi 动态列,布布扣,bubuko.com

时间: 2024-11-05 16:01:36

EasyUi 动态列的相关文章

easyui 动态列实现

最近因公司需要,对easyui的动态列实现研究,并在网上查了不少的资料,但都不理想,结合自己的实践,简单介绍下实现过程: 需求特殊点在于:根据数据库的动态表结构,动态的加载datagrid表格,因数据库的表结构是变化的,用传统的加载方式无法实现列随表变化:正所谓难者不会,会者不难,而网上的相关资料比较少,经过大量的实验,最终实现了功能,而且关键代码却非常简单,如下所示: <script type="text/javascript"> var dataGrid; var $d

asp.mvc + easyui 动态列

废话不多说,直接上代码: @model Huacisoft.Model.Crm_Sys_Role @{ Layout = null; } <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org

动态修改easyui datagrid 列宽度

$("#table").datagrid('hideColumn','a');//a表示列名,隐藏此列 var dg = $('#table');//table表id var col = dg.datagrid('getColumnOption','NAME');//获得该列属性 col.width = document.body.clientWidth*0.22;//调整该列宽度 col.align = 'center'; dg.datagrid(); 动态修改easyui data

jquery.dataTables动态列

jquery.dataTables  版本1.10.7 直接上代码: 0.table <table id="popReportTable"> <thead> <tr id="trId"> <td>显示名,这里可以给tr一个id,然后用$("#trId").html("列名...")来改变显示列名</td> </tr> </thead> <

MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据。

MariaDB 10.0.X中,动态列(Dynamic Columns),可以支持 JSON 格式来获取数据. 为了兼容传统SQL语法,MariaDB 10和MySQL5.7支持原生JSON格式,即关系型数据库和文档型NoSQL数据库集于一身. 使用说明: ###表结构 create table assets (   item_name varchar(32) primary key, -- A common attribute for all items   dynamic_cols  blo

extjs动态树 动态grid 动态列

由于项目需要做一个动态的extjs树.列等等,简而言之,就是一个都是动态的加载功能, 自己琢磨了半天,查各种资料,弄了将近两个星期,终于做出来了 首先,想看表结构,我的这个功能需要主从两张表来支持 代码目录表: CREATE TABLE SYS_T01_CODECONTENT ( ID NUMBER NOT NULL, PID NUMBER NOT NULL, TABLENAME VARCHAR2(50 BYTE), ZH_CN VARCHAR2(200 BYTE), ENABLE CHAR(1

树形报表支持动态列统计

汇总方式 选择 遍历字段 ,默认为数据汇总求和 字段语言 里填写要 在列 遍历 的字段 ,在后面的筛选条件里 增加 遍历字段='@now'  和其他条件 兼容原来的模式 树形报表支持动态列统计,布布扣,bubuko.com

Easy-UI 动态添加DataGrid的Toolbar按钮

在前人的基础上进行的修改,不知道他是从哪里引用来的,所以没有粘贴引用地址. 原代码不支持1.3.6. 修改功能: 1.如果之前没有添加过工具,用这个方法不能添加(已修复): 2.估计是不支持1.3.6,所以在1.3.6下不能删除按钮(已修复): 3.添加了在删除最有一个按钮后把按钮容器删除掉: 插件代码: $.extend($.fn.datagrid.methods, { addToolbarItem: function (jq, items) { return jq.each(function

LIST动态表格画线(动态列)

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4291398.html TABLES: mara,        makt,        mard. DATA: BEGIN OF gx_mara,      matnr LIKE mara-matnr,      meins LIKE m