📄 paginationaction.java
字号:
}
order=st.nextToken();
}
if (index!=-1){
if ((operationURLs!=null)&&(operationURLs.length>0)){
index--;
}
orderField=SQLFields[index]+" "+order;
}else{
orderField=getOrderField();
}
StringBuffer sb=new StringBuffer("SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY ");
sb.append(orderField)
.append(") AS ROWID,")
.append("*").append(" FROM ")
.append(getViewName());
String where = getWhere();
if ((where!=null)&&!"".equals(where))
sb.append(" WHERE ").append(where);
sb.append(") AS ")
.append(getViewName())
.append(" WHERE ROWID BETWEEN ")
.append(startRecord).append(" AND ").append(endRecord);
sql=sb.toString();
this.start=getStartOfAnyPage(pageNo, pageSize);
this.totalPageCount = (totalSize + pageSize -1) / pageSize;
if (totalPageCount<=0)
totalPageCount=1;
if(this.pageNo==this.totalPageCount){
this.avaCount=this.totalSize-(this.pageNo-1)*this.pageSize;
}else if (this.totalPageCount==0)
this.avaCount=0;
else
this.avaCount=pageSize;
String [] headers =getHeaders();
boolean hasOperation=false;
if ((operationURLs!=null)&&(operationURLs.length>0)) hasOperation=true;
sb=new StringBuffer();
sb.append("<input type='hidden' id='hasOperation' value='").append(hasOperation).append("'>");
if (orderIndex==-1)
sb.append("<input type='hidden' id='orderParam' name='orderParam' >");
else
sb.append("<input type='hidden' id='orderParam' name='orderParam' value='")
.append(hasOperation?(orderIndex+1):orderIndex)
.append(",").append(order).append("'>");
int len=headers.length;
sb.append("<TR>");
if (hasOperation){
sb.append("<TH width='60px' id='operation_th'>操作</TH>");
}
for(int i=0;i<len;i++){
if (i==orderIndex)
sb.append("<TH class='").append(order).append("'>")
.append(headers[i]).append("</TH>");
else
sb.append("<TH>").append(headers[i]).append("</TH>");
}
sb.append("</TR>");
len=SQLFields.length;
int i=0;
if (len==0){
this.dataGrid="";
return;
}
String keyId=getKeyId();
String []URLParameters=getURLParameters();
rs=stmt.executeQuery(sql);
while(rs.next()){
sb.append("<TR>");
if ((operationURLs!=null)&&(operationURLs.length>0)&&(keyId!=null)){
sb.append("<TD>");
for(int j=0;j<operationURLs.length;j++){
if ((j==0)&&(operationURLs[0]!=null)){
sb.append(" <a href='")
.append(operationURLs[0]).append("?")
.append(keyId).append("=")
.append(rs.getString(keyId))
.append(URLParameters[0].toString()).append("'>查看</a>");
}
if ((j==1)&&(operationURLs[1]!=null)){
sb.append(" <a href='")
.append(operationURLs[1]).append("?")
.append(keyId).append("=")
.append(rs.getString(keyId))
.append(URLParameters[1].toString()).append("'>修改</a>");
}
if ((j==2)&&(operationURLs[2]!=null)){
sb.append(" <a href='")
.append(operationURLs[2]).append("?")
.append(keyId).append("=")
.append(rs.getString(keyId))
.append(URLParameters[2].toString())
.append("' onclick=\"return confirm('确定要删除么?')\"").append(">刪除</a>");
}
}
sb.append("</TD>");
}
for(i=0;i<len;i++){
sb.append("<TD><div class=divout>")
.append(rs.getString(SQLFields[i])==null?"":rs.getString(SQLFields[i]))
.append("</div></TD>");
}
sb.append("</TR>");
}
this.dataGrid = sb.toString();
renderPageBar("submitForm", null);
}catch(Exception e){
logger.error(e);
throw e;
}finally{
closeAll(rs, stmt, conn);
}
}
private void renderPageBar(String queryJSFunctionName, String pageNoParamName){
if (getTotalPageCount()<1){
this.pageBar= "<input type='hidden' name='"+pageNoParamName+"' value='1' >";
return;
}
if (queryJSFunctionName == null || queryJSFunctionName.trim().length()<1) {
queryJSFunctionName = "gotoPage";
}
if (pageNoParamName == null || pageNoParamName.trim().length()<1){
pageNoParamName = "pageno";
}
String gotoPage = "_"+queryJSFunctionName;
StringBuffer html = new StringBuffer("\n");
html.append("<script language=\"Javascript1.2\">\n")
.append("function ").append(gotoPage).append("(pageNo){ \n")
.append( " var curPage=1; \n")
.append( " try{ curPage = document.all[\"")
.append(pageNoParamName).append("\"].value; \n")
.append( " document.all[\"").append(pageNoParamName)
.append("\"].value = pageNo; \n")
.append( " ").append(queryJSFunctionName).append("(); \n")
.append( " return true; \n")
.append( " }catch(e){ \n")
.append( " alert('尚未定义查询方法:function ")
.append(queryJSFunctionName).append("()'); \n")
.append( " document.all[\"").append(pageNoParamName)
.append("\"].value = curPage; \n")
.append( " return false; \n")
.append( " } \n")
.append( "}")
.append( "</script> \n")
.append( "");
html.append( "<table border=0 cellspacing=0 cellpadding=0 align=left width=100%> \n")
.append( " <tr> \n")
.append( " <td align=left class='font-size:12px'WIDTH=100%> ");
html.append( " 共<font color=red>" ).append( getTotalPageCount() ).append( "</font>页")
.append( " [") .append(getStart()).append("..").append(getEnd())
.append("/").append(this.getTotalSize()).append("] ")
.append( " ")
.append( " \n");
if (hasPreviousPage()){
html.append( "[<a href='javascript:").append(gotoPage)
.append("(") .append(getCurrentPageNo()-1)
.append( ")'>上一页</a>] \n");
}else{
html.append("[上一页] ");
}
int startPageNo=getStartPageNo();
int endPageNo=getEndPageNo();
for(int i=startPageNo;i<=endPageNo;i++){
if (i==pageNo){
html.append("<font color=red>"+i+"</font> ");
}else{
html.append("<a href='javascript:onclick=")
.append(gotoPage)
.append("(").append(i).append(")';>")
.append(i).append("</a> ");
}
}
html.append("<input type='hidden' name='")
.append(pageNoParamName).append("'>\n");
if (hasNextPage()){
html.append( " [<a href='javascript:")
.append(gotoPage)
.append("(").append((getCurrentPageNo()+1))
.append( ")'>下一页</a>] \n");
}else{
html.append(" [下一页]");
}
html.append("第<input type='text' class='input' name='topage' value='")
.append(pageNo+"'>页")
.append("<input type=button class='button' value='跳转' size=3 height=3 onclick=\"")
.append(gotoPage)
.append("(document.all['topage'].value);\">");
html.append( "</td></tr></table> \n");
this.pageBar= html.toString();
}
private int getStart(){
if (totalSize==0) return 0;
return start;
}
private int getEnd(){
int end = this.getStart() + this.getSize() -1;
if (end<0) {
end = 0;
}
return end;
}
private int getSize() {
return avaCount;
}
private int getTotalSize() {
return this.totalSize;
}
private int getCurrentPageNo(){
return this.pageNo;
}
private int getTotalPageCount(){
return this.totalPageCount;
}
private int getStartPageNo(){
return ((pageNo-1)/10)*10+1;
}
private boolean hasNextPage() {
return (this.getCurrentPageNo()<this.getTotalPageCount());
}
private boolean hasPreviousPage() {
return (this.getCurrentPageNo()>1);
}
private int getEndPageNo(){
return Math.min(totalPageCount,(pageNo-1)/10*10+10);
}
private int getStartOfAnyPage(int pageNo, int pageSize){
int startIndex = (pageNo-1) * pageSize + 1;
if ( startIndex < 1) startIndex = 1;
return startIndex;
}
public void closeAll(ResultSet rs,Statement stmt,Connection conn){
try{
if (rs!=null){
rs.close();
rs=null;
}
if(stmt!=null){
stmt.close();
stmt=null;
}
if (conn!=null){
conn.close();
conn=null;
}
}catch(SQLException e){
logger.error("close failed ",e);
}
}
public String getDataGrid() {
return dataGrid;
}
public void setDataGrid(String dataGrid) {
this.dataGrid = dataGrid;
}
public String getPageBar() {
return pageBar;
}
public void setPageBar(String pageBar) {
this.pageBar = pageBar;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -