分頁行生成工具依賴數據區表生成工具,這是一個封裝比較好的工具,通過上面的例子可以看到,除了和相關的數據區表生成工具發生關聯外沒有其它什麼命令就能完全實現翻頁控制。包括點擊數據區表頭排序(只用設置排序字段名)都是自動實現的。
這個分頁行可以設定每頁行數、跳到上頁、下頁或者指定頁,輸入的頁碼位數還能根據總頁數自動調整。所以功能比較完善,而且可以設置自己喜歡的樣式。
下面簡單介紹實現方式:
一、生成的代碼。
<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起什麼作用?