最近在把以前写的一个项目改成用easyui做前端。过程中遇到了不少问题。其中一个就是datagrid不能很好的布局。想了好多办法都有局限。最后想到会不会是布局(easyui-layout)的问题,经过实验,最后问题解。
1:比如在项目中用到了datagrid。如果界面比较简单---只有一个datagrid只需要把它的属性fit 设置为true就能实现自动适应窗体。如果在datagrid上方还有其他div的话,div 就会把datagrid挤压到窗体的下方。如果datagrid有分页控件,分页控件就看不到了。这个时候就应该用 easyui-layout来分隔窗体来使具体的内容放在easyui-layout不同的部分。这样就能很好的解决自适应问题。
糟糕的写法:
<div>查询条件</div>
<table class="easyui-datagrid" fit="true"></table>
正确的写法:
<div class="easyui-layout"data-options="fit:true">
<div data-options="region:'north'" style="height:100px">
<div>查询条件</div>
</div>
<div data-options="region:'center'">
<table class="easyui-datagrid" fit="true"></table>
</div>
</div>
2:基于body标签的easyui-layout当浏览器窗口大小改变时,easyui-layout可以根据窗口的大小来调整自己的大小.基于div标签的easyui-layout如果想拥有上述功能必须设置easyui-layout的属性fit等于true.
情形1:
<body class="easyui-layout">
<div data-options="region:'north'" style="height:100px">
<table id="part1"></table>
</div>
<div data-options="region:'center'">
<table id="part2"></table>
</div>
</div>
情形2:
<div class="easyui-layout"data-options="fit:true">
<div data-options="region:'north'" style="height:100px">
<table id="part1"></table>
</div>
<div data-options="region:'center'">
<table id="part2"></table>
</div>
</div>
3:在html中定义easyui时,下面两种写法是一样的。即easyui控件的属性可以写在dataoptions属性里,也可以把这些属性写到标签上。
写法1:
<div class="easyui-layout"data-options="fit:true">
<div data-options="region:'north'" style="height:100px">
<table id="part1"></table>
</div>
<div data-options="region:'center'">
<table id="part2"></table>
</div>
</div>
写法2:
<div class="easyui-layout"fit="true">
<div region="north"style="height:100px;">
<table id="part1"></table>
</div>
<div region="center">
<table id="part2"></table>
</div>
</div>