分页和排序
<h3>说明</h3>
<ul>
<li>前端采用easyui表格来实现分页</li>
<li>后端分页采用拦截器封装PageOrder对象</li>
</ul>
<h4>后端分页</h4>
<p>通过分页拦截器,判断传入参数中是否有 rows 和 page两个参数,如果存在自动封装为PageOrder 对象。</p>
<p><strong>属性解释:</strong></p>
<pre><code>rows: 每页显示多少行
page: 在第几页
sort: 排序列名称
order: 排序方式(desc,asc)</code></pre>
<h6>Controller</h6>
<ul>
<li>获取PageOrder对象:直接通过 getAttr("PageOrder") 获取 PageOrder对象</li>
<li>将结果转成JSON PageKit.toJSON(page)</li>
</ul>
<pre><code class="language-java">//
public void page() throws Exception{
Page<AuthSign> page = AuthSign.dao.paginate(getAttr("PageOrder"), getModel(AuthSign.class,"sign"));
renderJson(PageKit.toJSON(page));
}</code></pre>
<ul>
<li>如果前端不是分页,但是想调用paginate方法,这时候不能通过getAttr("PageOrder")获取 PageOrder 对象,需要自己创建,例如</li>
</ul>
<pre><code class="language-java">public void export() throws Exception{
Log log = getModel(Log.class);
log.put("start_time", getParaToDateLong("start_time"));
Page<Log> page = Log.dao.paginate(new PageOrder(), log);
render(new CSVRender("log.tpl",page.getList()));
}</code></pre>
<h6>Model</h6>
<ul>
<li>获取SqlPara对象</li>
<li>调用分页方法</li>
</ul>
<pre><code class="language-java">public Page<AuthSign> paginate(PageOrder order, AuthSign authSigns) {
SqlPara sqlPara = getSqlPara("pdc.auth_sign.paginate",authSigns,order);
return paginate(order.getPageNum(), order.getPageSize(), sqlPara);
}</code></pre>
<h6>SQL模板</h6>
<ul>
<li>只负责排序,不负责分页。</li>
</ul>
<pre><code class="language-sql">/**如果没有order 默认按照 a.sign_order 排序;如果没有orderType 默认按照 asc 排序*/
#sql("paginate")
select a.* from t_pdc_auth_sign a where a.delete_flag <> 1
order by #(order ?? "a.sign_order") #(orderType ?? "asc")
#end</code></pre>
<h4>前端分页</h4>
<ul>
<li>表格配置中默认支持分页,如果不想分页,可以修改配置。具体的配置完全是easyui表格配置</li>
<li>通过 sortable:true 判断该列是否需要分页</li>
</ul>
<pre><code class="language-html"><table id="ey_grid" style="min-height:400px;">
<thead>
<tr>
<th data-options="field:'ck',checkbox:true"></th>
<th data-options="field:'id',hidden:true">ID</th>
<th data-options="field:'sign_remark',width:80,sortable:true">关键字名称</th>
<th data-options="field:'sign_name',width:80,sortable:true">关键字标识</th>
<th data-options="field:'sign_order',width:80,sortable:true">排序号</th>
<th data-options="field:'create_time',width:80,sortable:true,formatter: function(value,row,index){
return $.common.time(value)
}
">操作时间</th>
</tr>
</thead>
</table></code></pre>