在我本身的《Web开发框架》中,用了不少年的EasyUI,最新版本EasyUI为1.4.5,随着版本的更新,其不少功能获得了很大的完善和提升,同时也扩展了一些新的功能,之前在布局和对话框弹出层的自动适应大小的问题,也在最近的一些版本获得了解决,本文在迁移到最新EasyUI版本的时候,总结了一些经验,但愿对你们使用这个强大的Web界面组件有所帮助。javascript
上面的布局是顶部内容+一级菜单、左边菜单,右边主内容为页面内容,页面内容是变化的内容,其余部分为不变的,这样的布局代码以下所示。html
<!DOCTYPE html> <html> <body style="overflow-y:hidden;" scroll="no"> <div class="easyui-layout" data-options="fit:true,border:false"> <!--顶部Banner--> <div region="north" id="header"> </div> <!--左侧导航菜单--> <div region="west" split="true" title="导航菜单" style="width:200px;padding:1px;overflow:hidden;"> </div> <!--主工做区--> <div id="mainPanle" region="center" title="" style="overflow:hidden;"> </div> <!--底部版权标识--> <div data-options="region:'south',split:true" style="height: 40px;background: #D2E0F2;"> </div> </div> </body> </html>
在上面的主页面布局代码里面,<div class="easyui-layout" 外面注意不要包含有Form的标志,不然会出现一些莫名其妙的错误。咱们经过data-options="fit:true,border:false"来设定布局的自动适应,这样在放大缩小页面的时候,布局老是可以自动适应页面的变化的。java
在以前的一些版本里面,DataGrid老是没有可以自动实现宽度的自动调整,为了实现这种效果,还须要添加一些JS代码进行处理,这种方式在如今DataGrid支持宽度百分比的属性后,变得简单容易了。框架
表格的HTML代码以下所示。异步
<!-------------------------------详细信息展现表格-----------------------------------> <table id="grid" title="用户操做" data-options="iconCls:'icon-view'"></table>
而其中咱们自动经过JQuery赋值的JS代码以下所示。布局
//实现对DataGird控件的绑定操做 function InitGrid(queryData) { $('#grid').datagrid({ //定位到Table标签,Table标签的ID是grid url: '/User/FindWithPager', //指向后台的Action来获取当前用户的信息的Json格式的数据 title: '系统用户信息', iconCls: 'icon-view', height: 650, width: '100%', nowrap: true, autoRowHeight: true, striped: true, collapsible: true, pagination: true, pageSize: 50, pageList: [50, 100, 200], rownumbers: true, //sortName: 'ID', //根据某个字段给easyUI排序 sortOrder: 'asc', remoteSort: false, //idField: 'ID', //不设置idField,翻页不会记录选择 queryParams: queryData, //异步查询的参数 columns: [[ { field: 'ck', checkbox: true }, //选择 { title: 'ID', field: 'ID', width: 80, sortable: true }, { title: '用户编码', field: 'HandNo', width: 80, sortable: true }, { title: '用户名/登陆名', field: 'Name', width: 120, sortable: true }, { title: '真实姓名', field: 'FullName', width: 80, sortable: true }, { title: '是否过时', field: 'IsExpire', width: 80, formatter: function (val, rowdata, index) { if (val) { return '<a class="grid_unvisible" href="javascript:void(0)" >' + val + '</a>'; } else { return '<a class="grid_visible" href="javascript:void(0)" >' + val + '</a>'; } } }, .................................... ]], onLoadSuccess: function () { $(".grid_visible").linkbutton({ text: '可用', plain: true, iconCls: 'icon-ok' }); $(".grid_unvisible").linkbutton({ text: '过时', plain: true, iconCls: 'icon-stop' }); $(".grid_normal").linkbutton({ text: '正常', plain: true, iconCls: 'icon-ok' }); $(".grid_deleted").linkbutton({ text: '已删除', plain: true, iconCls: 'icon-stop' }); }, toolbar: [{ id: 'btnAdd', text: '添加', iconCls: 'icon-add', handler: function () { ShowAddDialog();//实现添加记录的页面 } }, '-', { id: 'btnEdit', text: '修改', iconCls: 'icon-edit', handler: function () { ShowEditOrViewDialog();//实现修改记录的方法 } }, '-', { id: 'btnDelete', text: '删除', iconCls: 'icon-remove', handler: function () { Delete();//实现直接删除数据的方法 } }, '-', { id: 'btnView', text: '查看', iconCls: 'icon-table', handler: function () { ShowEditOrViewDialog("view");//实现查看记录详细信息的方法 } }, '-', { id: 'btnReload', text: '刷新', iconCls: 'icon-reload', handler: function () { //实现刷新栏目中的数据 $("#grid").datagrid("reload"); } }], onDblClickRow: function (rowIndex, rowData) { $('#grid').datagrid('uncheckAll'); $('#grid').datagrid('checkRow', rowIndex); ShowEditOrViewDialog(); } }); };
为了实现其自动伸缩,咱们只须要设置 width: '100%'就能够了,不须要像之前那样须要自动宽度。ui
在咱们《Web开发框架》里面,利用DIV层做为界面的子窗口是一种很常见的处理方式,所以弹出的对话框层须要设定好其对应的自动缩放效果。this
特别是因为不一样的电脑设备上,笔记本和台式电脑的高度不一样,还有分辨率不一样,所以它们的宽度高度须要很是灵活的自动调整处理,实现咱们界面的一致性。编码
以上界面咱们经过样式的调整就能够实现对话框大小的变化,以及跟随总体布局的调整,整体居中的效果了。url
<!--------------------------添加信息的弹出层----------------------------> <div id="DivAdd" class="easyui-dialog" style="width:98%;max-width:824px;height:98%;max-height:300px;" closed="true" resizable="true" modal="true" data-options="iconCls: 'icon-add',buttons: '#dlg-buttons', onResize:function(){$(this).dialog('center');}"> </div>
其中 style="width:98%;max-width:824px;height:98%;max-height:300px;" 确保了对话框不会太大变得难看,咱们让它保持一个较好的大小。
其中 onResize:function(){$(this).dialog('center');} 让它在布局变化的时候自动把对话框居中,这样效果更加好看。
以上就是咱们一般在实现布局和对话框自动适应大小所作的一些处理,可以很好的适应咱们不一样的设备分辨率。