EasyUI之DataGird动态组合列

      Dojo、ExtJS、Jquery(EasyUI、jQgrid、ligerui、DWZ)、还有asp.net中的服务器控件、当然也少不了HTML 标签之table标签了。其中dojo、ExtJS、Jquery这三者应该算是并列关系吧,都是基于JavaScript的框架、只不过dojo、ExtJS的学习成本比jquery高一些罢了,学习曲线陡一些,中文文档少一些,不过功能之强大还属dojo 、extjs,dojo偏向于地图。使用各式各样的datagrid有几年了,一直都没有做过总结,姑且算是忙于工作吧。最为惭愧的是,每一种dataGrid都没有用的特别精通。在实际使用中遇到问题,除了谷歌,度娘意外就只有查看晦涩难懂的英文文档了。

   注:dojo 有人直接念拼音、有人叫豆角(谐音)。

 

  今天在这里简单介绍EasyUI中的DataGrid中的动态组合列,也是在项目中遇到的一个问题,就是同一个报表,不同的用户登录后只能查看自己权限范围内的报表字段。有这么两种思路:

  1. 隐藏列

鉴于现在的牛人非常多,随便一查看源码就能知晓其大意,便放弃了。

  2.  动态组合显示的列  这里用了easyui 的datagrid

 

先来看一下

<table id="dg"></table>
$('#dg').datagrid({

                title: '',

                loadMsg: "数据加载中,请稍候……",

                height: $(window).height() - 31,

                width: $(window).width(),

                singleSelect: true,

                selectOnCheck: true,

                url: 'col.page',

                sortName: 'sn',

                sortOrder: 'desc',

                remoteSort: false,

                idField: 'id',

                columns: [[

                    { field: 'id', title: '主键编码', hidden: true },

                    { field: 'name', title: '字段名', width: 100 },

                    { field: 'alias', title: '字段别名', width: 100 },

                    { field: 'sn', title: '顺序', width: 100, sortable: true },

                    { field: 'insdt', title: '创建时间', width: 220 },

                    { field: 'opuser', title: '操作用户', hidden: true, width: 100 },

                ]],

                onDblClickRow: function (rowIndex, rowData) {

                    upd();

                }

 });

$('#dg').datagrid()中所包含的部分为一个Object

Columns中所包含的部分为一个嵌套数组Object

说到这里应该都明白其中大意了吧,看实现代码

  function easyUIDataGrid(medid) {

            var $datagrid = {};

            var columns = new Array();



            $datagrid.title = "";

            $datagrid.height = $(window).height() - 31;

            $datagrid.width = $(window).width();

            $datagrid.sortName = "dt";

            $datagrid.sortOrder = "desc";

            $datagrid.idField = "id";



            var param = { "medid": medid };

            $.ajax({

                url: 'getCol.page',

                type: 'post',

                data: "medid=" + medid,

                dataType: "json",

                async: false,

                success: function (returnValue) {
            //异步获取要动态生成的列 别名,宽度也可以 var arr = returnValue; $.each(arr, function (i, item) { columns.push({ "field": item.colname, "title": item.colalias, "width": 100, "sortable": true }); }); $datagrid.columns = new Array(columns); $('#dg').datagrid($datagrid); console.log(JSON.stringify($datagrid)); } }); }

转载请注明出处  

如有疑问,欢迎留言。

作者网站http://www.xyzla.com

你可能感兴趣的:(easyui)