正在用Struts做分页
想用html:select做一个跳转控制
不知道如何控制html:select使其选择后触发/pagetest.do?page=选定页另外我是把分页控制放在一个bean中的
这个bean中有上一页
下一页
最后一页
第一页等属性不知道如何将页数绑定到这个跳转控制的html:select上如果哪位兄弟有类似的分页例子
分享一下:)

解决方案 »

  1.   

    第一个 onclick="/pagetest.do?page=选定页"
      

  2.   


    不知道如何将页数绑定到这个跳转控制的html:select上如果哪位兄弟有类似的分页例子
    分享一下:)  不知道你是怎么用的
    <html:select ****** value="绑定的页">
      

  3.   

    我的思路如下,不知道能不能帮你解决问题<html:form property="pagingbean">
      <html:hidden property="previouspage">
      <html:hidden property="previouspage">
    .....
    </html:form>
    <html:select onchange="changePage(this.value);">
      <html:options collection="..." .../>
    </html:select><script>
      function(page) {
        var form = document.getElementsByName("pagingbean");
        form.submit();
      }
    </script>
      

  4.   

    基本思想应该是从查询出来的结果集合中取一部分进行显示,给你一个例子(摘来的):   
        
      <%--   
      作者:何志强[[email protected]]   
      日期:2000-08-03   
      版本:1.0   
      功能:JSP数据库操作例程   -   数据分页显示   -   JDBC   2.0   -   Oracle   
      --%>   
        
      <%@   page   contentType="text/html;charset=8859_1"   %>   
        
      <%   
      //变量声明   
      java.sql.Connection   sqlCon;   //数据库连接对象   
      java.sql.Statement   sqlStmt;   //SQL语句对象   
      java.sql.ResultSet   sqlRst;     //结果集对象   
        
      java.lang.String   strCon;         //数据库连接字符串   
      java.lang.String   strSQL;         //SQL语句   
        
      int   intPageSize;                       //一页显示的记录数   
      int   intRowCount;                       //记录总数   
      int   intPageCount;                     //总页数   
      int   intPage;                               //待显示页码   
      java.lang.String   strPage;   
        
      int   i;   
        
      //设置一页显示的记录数   
      intPageSize   =   2;   
        
      //取得待显示页码   
      strPage   =   request.getParameter("page");   
      if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据   
            intPage   =   1;   
      }   
      else{//将字符串转换成整型   
            intPage   =   java.lang.Integer.parseInt(strPage);   
            if(intPage<1)   intPage   =   1;   
      }   
        
      //装载JDBC驱动程序   
      java.sql.DriverManager.registerDriver(new   oracle.jdbc.driver.OracleDriver());   
        
      //设置数据库连接字符串   
      strCon   =   "jdbc:oracle:thin:@linux:1521:ora4cweb";   
        
      //连接数据库   
      sqlCon   =   java.sql.DriverManager.getConnection(strCon,"hzq","hzq");   
        
      //创建一个可以滚动的只读的SQL语句对象   
      sqlStmt   =   sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);   
        
      //准备SQL语句   
      strSQL   =   "select   name,age   from   test";   
        
      //执行SQL语句并获取结果集   
      sqlRst   =   sqlStmt.executeQuery(strSQL);   
        
      //获取记录总数   
      sqlRst.last();   
      intRowCount   =   sqlRst.getRow();   
        
      //记算总页数   
      intPageCount   =   (intRowCount+intPageSize-1)   /   intPageSize;   
        
      //调整待显示的页码   
      if(intPage>intPageCount)   intPage   =   intPageCount;   
      %>   
        
      <html>   
      <head>   
      <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">   
      <title>JSP数据库操作例程   -   数据分页显示   -   JDBC   2.0   -   Oracle</title>   
      </head>   
        
      <body>   
        
      <table   border="1"   cellspacing="0"   cellpadding="0">   
      <tr>   
            <th>姓名</th>   
            <th>年龄</th>   
      </tr>   
        
      <%   
      if(intPageCount>0){   
            //将记录指针定位到待显示页的第一条记录上   
            sqlRst.absolute((intPage-1)   *   intPageSize   +   1);   
        
            //显示数据   
            i   =   0;   
            while(i<intPageSize   &&   !sqlRst.isAfterLast()){   
                  %>   
      <tr>   
            <td><%=sqlRst.getString(1)%></td>   
            <td><%=sqlRst.getString(2)%></td>   
      </tr>   
                  <%   
                  sqlRst.next();   
                  i++;   
            }   
      }   
      %>   
        
      </table>   
        
      第<%=intPage%>页&nbsp;&nbsp;共<%=intPageCount%>页&nbsp;&nbsp;<%if(intPage<intPageCount){%><a   href="jdbc20-oracle.jsp?page=<%=intPage+1%>">下一页</a><%}%>&nbsp;&nbsp;<%if(intPage>1){%><a   href="jdbc20-oracle.jsp?page=<%=intPage-1%>">上一页</a><%}%>   
        
      </body>   
      </html>   
        
      <%   
      //关闭结果集   
      sqlRst.close();   
        
      //关闭SQL语句对象   
      sqlStmt.close();   
        
      //关闭数据库   
      sqlCon.close();   
      %>   
    -----------------------------------------------------
    有一些数据库,如Mysql, Oracle等有自己的分页方法,比如Mysql可以使用limit子句,Oracle可以使用ROWNUM来限制结果集的大小和起始位置。这里以Mysql为例,其典型代码如下: 
        // 计算总的记录条数
        String SQL = "SELECT Count(*) AS total " + this.QueryPart; 
        rs = db.executeQuery(SQL);    
        if (rs.next()) 
        Total = rs.getInt(1);     
        // 设置当前页数和总页数
        TPages = (int)Math.ceil((double)this.Total/this.MaxLine); 
        CPages = (int)Math.floor((double)Offset/this.MaxLine+1); 
        // 根据条件判断,取出所需记录
        if (Total > 0) { 
          SQL = Query + " LIMIT " + Offset + " , " + MaxLine; 
          rs = db.executeQuery(SQL);       
        }    
        return rs; 
      }  
      
      

  5.   

    自己刚实现了个分页方法 只是对数据库操作不太好,每次点分页就要查所有数据。只是练习下自己的想法。
    用<logic:iterate id="" name=""  property=""  indexId="index" length="20" offset="${XXX.currentPage * 20}">每页显示的条数是 length属性控制,offset控制显示的部位(即第几页的某些数据)
    第一次查询出来的数据设置currentPage (当前页数)= 0
    然后点一次加一次 上下页按钮设置为:<logic:greaterThan name="XXX"  property="currentPage" value="0">
                                       <html:button property="upPage" value="上页" onclick="upPage()" />
                                 </logic:greaterThan>
                             <logic:greaterThan name="XXX"  property="totalPage" value="${XXX.currentPage + 1}">
                                 <html:button property="nextPage" value="下页" onclick="nextPage()" />
                             </logic:greaterThan>
    在js里使currentPage+1