1.5.3 分頁類
CreatePage類用來封裝分頁信息,這些信息都保存在CreatePage類的相應(yīng)屬性中。CreatePage類的屬性如下:
例程14 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java
private int CurrentP; //當(dāng)前頁碼
private int AllP; //總頁數(shù)
private int AllR; //總記錄數(shù)
private int PerR; //每頁顯示的記錄數(shù)
private String PageLink; //分頁導(dǎo)航欄信息
private String PageInfo; //分頁狀態(tài)顯示信息
在類的構(gòu)造方法中為這些屬性賦初始值。CreatePage類的構(gòu)造方法如下:
例程15 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java
public CreatePage(){
CurrentP=1; //設(shè)置當(dāng)前頁碼為1
AllP=1; //設(shè)置總頁數(shù)為1
AllR=0; //設(shè)置總記錄數(shù)為0
PerR=3; //設(shè)置每頁顯示3條記錄
PageLink="";
PageInfo="";
}
分頁信息中的總記錄數(shù),需要通過查詢數(shù)據(jù)庫來獲得,其實(shí)現(xiàn)可查看1.5.2節(jié)對(duì)OpDB類中的OpCreatePage()方法的介紹。CreatePage類中用來設(shè)置總記錄數(shù)的方法如下:
例程16 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java
/* 設(shè)置總記錄數(shù) */
public void setAllR(int AllR){
this.AllR=AllR;
}
總頁數(shù)需要獲得總記錄數(shù)后與每頁顯示的記錄數(shù)計(jì)算得到,其算法為:“總頁數(shù)=(總記錄數(shù)%每頁顯示記錄==0)?(總記錄數(shù)/每頁顯示記錄):(總記錄數(shù)/每頁顯示記錄+1)”,所以要先設(shè)置總記錄數(shù),然后再來設(shè)置總頁數(shù)。CreatePage類中用來設(shè)置總頁數(shù)的方法如下:
例程17 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java
/* 計(jì)算總頁數(shù) */
public void setAllP(){
AllP=(AllR%PerR==0)?(AllR/PerR):(AllR/PerR+1);
}
在設(shè)置當(dāng)前頁碼時(shí),要判斷由參數(shù)傳遞的當(dāng)前頁碼是否有效,例如傳遞的值是否為數(shù)字形式、是否小于1、是否大于總頁數(shù)等,對(duì)這些情況要進(jìn)行相應(yīng)的處理。CreatePage類中用來設(shè)置當(dāng)前頁碼的方法如下:
例程18 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java
/* 設(shè)置當(dāng)前頁碼 */
public void setCurrentP(String currentP) {
if(currentP==null||currentP.equals(""))
currentP="1";
try{
CurrentP=Integer.parseInt(currentP);
}catch(NumberFormatException e){ //若參數(shù)傳遞的當(dāng)前頁碼不是數(shù)字形式
CurrentP=1; //將當(dāng)前頁碼設(shè)為1
e.printStackTrace();
}
if(CurrentP<1) //若當(dāng)前頁碼小于1
CurrentP=1; //將當(dāng)前頁碼賦值為1
if(CurrentP>AllP) //若當(dāng)前頁碼大于總頁數(shù)
CurrentP=AllP; //將當(dāng)前頁碼賦值為總頁數(shù),即最后一頁
}
在調(diào)用以上方法后,就可調(diào)用設(shè)置分頁狀態(tài)顯示信息的方法來設(shè)置分頁狀態(tài)顯示信息。該方法的代碼如下:
例程19 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java
/* 設(shè)置分頁狀態(tài)顯示信息 */
public void setPageInfo(){
if(AllP>1){
PageInfo="<table border='0' cellpadding='3'><tr><td>";
PageInfo+="每頁顯示:"+PerR+"/"+AllR+" 條記錄!";
PageInfo+="當(dāng)前頁:"+CurrentP+"/"+AllP+" 頁!";
PageInfo+="</td></tr></table>";
}
}
另外,還需要設(shè)置分頁導(dǎo)航欄信息。在設(shè)置該信息時(shí),需要判斷總頁數(shù),若總頁數(shù)大于1,則顯示分頁導(dǎo)航鏈接,否則不顯示。CreatePage類中用來設(shè)置分頁導(dǎo)航欄信息的方法如下:
例程20 代碼位置:光盤\TM\01\src\com\yxq\model\CreatePage.java
/* 設(shè)置分頁導(dǎo)航欄信息 */
public void setPageLink(String gowhich){
if(gowhich==null)
gowhich="";
if(gowhich.indexOf("?")>=0)
gowhich+="&";
else
gowhich+="?";
if(AllP>1){ //如果總頁數(shù)大于1頁,生成分頁導(dǎo)航鏈接
PageLink="<table border='0' cellpadding='3'><tr><td>";
if(CurrentP>1){ //若當(dāng)前頁碼大于1,則顯示“首頁”和“上一頁”超鏈接
PageLink+="<a href='"+gowhich+"showpage=1'>首頁</a> ";
PageLink+="<a href='"+gowhich+"showpage="+(CurrentP-1)+"'>上一頁</a> ";
}
if(CurrentP<AllP){ //若當(dāng)前頁碼小于總頁數(shù),則顯示“下一頁”和“尾頁”超鏈接
PageLink+="<a href='"+gowhich+"showpage="+(CurrentP+1)+"'>下一頁</a> ";
PageLink+="<a href='"+gowhich+"showpage="+AllP+"'>尾頁</a>";
}
PageLink+="</td></tr></table>";
}
}