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)); } }); }

转载请注明出处  

如有疑问,欢迎留言。

作者网站https://xyzla.com

posted @ 2015-01-28 16:43  xyzla  阅读(2465)  评论(0编辑  收藏  举报