分页行生成工具依赖数据区表生成工具,这是一个封装比较好的工具,通过上面的例子可以看到,除了和相关的数据区表生成工具发生关联外没有其它什么命令就能完全实现翻页控制。包括点击数据区表头排序(只用设置排序字段名)都是自动实现的。
这个分页行可以设定每页行数、跳到上页、下页或者指定页,输入的页码位数还能根据总页数自动调整。所以功能比较完善,而且可以设置自己喜欢的样式。
下面简单介绍实现方式:
一、生成的代码。
<input type=hidden name='PPV_message' value=''>
<input type=hidden name='reqfrompage' value=''>
<input type=hidden name='reqfromtable' value=''>
<input type=hidden name='OrderClause' value='IES_ID desc,IES_INDEX desc'>
<input type=hidden name='OriOrderField' value=''>
<input type=hidden name='OriOrderType' value=''>
<input type=hidden name='SqlClause' value=''>
<input type=hidden name='detailcount' value='20'>
<input type=hidden name='selectdetail' value=''>
上面是存储与页面有关的参数,包括排序方式等
<input type="hidden" name="PAC_pageNo" value="1">
<input type="hidden" name="PAC_pageSize" value="20">
<input type="hidden" name="PAC_pageNo_bak" value="1">
<input type="hidden" name="PAC_pageSize_bak" value="20">
这些是分页行相关的参数
<TABLE width="100%" class="pageTABLE">
<tr>
<td class=pageTD>
第<input type="text" name="PAC_pageNo_0" value="1" class="pageInputText" size="1" maxlength="1" οnkeyup="javascript:PAC_pageNo.value=PAC_pageNo_0.value;PAC_pageSize.value=PAC_pageSize_0.value;PAC_pageLinePressKey('');">页/共4页(共75条记录)
<input type="button" class="pageButton" value="上页" disabled onClick="javascript:PAC_pageNo.value=0;PAC_pageLineQry('');">
<input type="button" class="pageButton" value="刷新" onClick="javascript:PAC_pageNo.value=PAC_pageNo_0.value;PAC_pageSize.value=PAC_pageSize_0.value;PAC_pageLineQry('');">
<input type="button" class="pageButton" value="下页" onClick="javascript:PAC_pageNo.value=2;PAC_pageLineQry('');">
每页<input type="text" name="PAC_pageSize_0" value="20" class="pageInputText" size="2" maxlength="2" οnkeyup="javascript:PAC_pageNo.value=PAC_pageNo_0.value;PAC_pageSize.value=PAC_pageSize_0.value;PAC_pageLinePressKey('');">行
</td>
</tr>
</table>
这些是生成的代码,在一个table中,代码包含调用几个js函数。
二、页面函数:
这是调用查询方法的函数
function PAC_pageLineQry(t){
var pre="";
if (t!="") pre=t+"_";
var p=FOM_getFormObj().elements[pre+"PAC_pageNo"];
var s=p.value;
if (!STR_isUnsignedInt(s,s.length)){
p.value=FOM_getFormObj().elements[pre+"PAC_pageNo_bak"].value;
}
p=FOM_getFormObj().elements[pre+"PAC_pageSize"];
var s=p.value;
if (!STR_isUnsignedInt(s,s.length)){
p.value=FOM_getFormObj().elements[pre+"PAC_pageSize_bak"].value;
}
FOM_getFormObj().elements["reqfrompage"].value='qryItem';
FOM_getFormObj().elements["reqfromtable"].value=t;
FOM_getFormObj().submit();
}
这是按回车键后执行的方法
function PAC_pageLinePressKey(t){
if (13!=event.keyCode) return;
PAC_pageLineQry(t);
}
这是标题排序函数
function PAC_orderby(t,str){
var pre="";
if (t!="") pre=t+"_";
var order="";
var pf=FOM_getFormObj().elements[pre+"OriOrderField"];
var pt=FOM_getFormObj().elements[pre+"OriOrderType"];
if(pf.value==str){
if(pt.value=="ASC"){
order=" order by "+str+" DESC";
pt.value="DESC";
}else{
order=" order by "+str;
pt.value="ASC";
}
}else{
order=" order by "+str;
pf.value=str;
pt.value="ASC";
}
FOM_getFormObj().elements[pre+"OrderClause"].value=order;
FOM_getFormObj().reqfrompage.value="orderby";
FOM_getFormObj().elements["reqfromtable"].value=t;
FOM_getFormObj().submit();
}
三、相关类:
关于相关类的代码参考《2.10 业务开发(给开发人员的样例程序)》。需要注意的是下面一段:
if(request.getParameter("reqfrompage").equals("orderby"))
{
operateOrderBy(request,new SynchroLogQryBusiness());
return new BaseForward("SUCCESS");
}
需要补充的是,查询部分翻页内容的具体代码都封装到底层,开发人员也不需要关心怎么实现。如果你对这篇文章感兴趣,那问你一个问题,页面reqfromtable参数的作用是什么?PAC_pageLineQry函数参数中的t起什么作用?