各位大虾,我想实现的功能是:在分页的页面上是多条复选框的记录,假设我在第一页上选择了三条了记录,然后点击下一页,又选择了两条记录,然后点击上一页,原来选择的三条记录前面的对号消失了,处于未选中状态,怎么才能实现点击上一页,原来的记录还处于选中状态。大虾们帮帮忙

解决方案 »

  1.   

    记入cookie或者记入session啥的么……或者直接把页面合并,放到不同的DIV里,比如显示第一页就只显示第一个DIV里的复选框,点击下一页后隐藏第一个DIV,显示第二个DIV这样
      

  2.   


    直接用js来控制div的显隐! 如果数据不多的话,值得使用!
      

  3.   

    如果翻页时页面未刷新,可以把选择的内容保存到js变量中;
    否则可以存到cookie中;
    页面显示时读取选择项记录再还原
      

  4.   

    大虾们,小弟还是不是很明白,怎么用js来隐藏div啊,数据是分页的,我想用js来实现获取的数据,但只能获取当前页的数据,翻页后原来选择的获取不到啊
      

  5.   

    记入cookie是好的做法,div是不行的
      

  6.   

    做法就是,在你点checkbox的时候,同时进行记录、删除cookie内的值,翻页的时候,生成页面的时候读取出来,如果本页的有选择的,就设置checked=true.这里有asp.net现成的例子,。做法基本类似
    http://dotnet.aspx.cc/file/Cross-Pages-Checked-GridView.aspx实例
    http://dotnet.aspx.cc/Exam/GridViewMultiSelect.aspx
      

  7.   

    对,我就是想实现你给我这个实例的效果,cookie我不是很会使用 啊
      

  8.   

    <script type="text/javascript">
        function SetArticleId(o, i) {
          if (o.checked) {
            AddCookie(i)
          }
          else {
            RemoveCookie(i)
          }
        }
        function SetCookie(name, value) {
          document.cookie = name + "=" + escape(value);
        }
        function GetCookie(name) {
          if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf(name + "=");
            if (c_start != -1) {
              c_start = c_start + name.length + 1;
              c_end = document.cookie.indexOf(";", c_start);
              if (c_end == -1) c_end = document.cookie.length;
              return unescape(document.cookie.substring(c_start, c_end));
            }
          }
          return "";
        }
        function AddCookie(i) {
          d = GetCookie("ArticleId");
          if (d == "") d = "|";
          if (d.indexOf("|" + i + "|") == -1) {
            d += i + "|";
            SetCookie("ArticleId", d);
          }
        }    function RemoveCookie(i) {
          d = GetCookie("ArticleId");
          var reg = new RegExp("\\|" + i + "\\|");
          if (reg.test(d)) {
            d = d.replace(reg, "|");  
            SetCookie("ArticleId", d);
          }     
        }    
      </script>
    然后你在asp的分页里面<%
    Dim Articles
    Articles = Request.Cookies("ArticleId")%>循环分页的地方写
    <input type="checkbox" name="ArticleId" onclick="SetArticleId(this,<%=rs("ArticleId")%>);" <%if InStr(Articles,"|" & rs("ArticleId")%> & "|")>0 Then Response.Write "checked='checked'"%> />
      

  9.   

    <%if InStr(Articles,"|" & rs("ArticleId")%> & "|")>0 Then Response.Write "checked='checked'"%>这句话能给解释一下吗,尤其是InStr()不是很明白,谢谢你帖的代码
      

  10.   

    InStr就是去判断id是否已经在Cookie中存在
      

  11.   

    我是用的jsp,问题还没有解决,但是仍然谢谢各位大虾了~~~~
      

  12.   

    checked='checked'这一句老是出错,是不是应该改成String checked="checked";啊
      

  13.   

    我现在的程序是这样的,但是还是不行
    <%@page contentType="text/html;charset=GB2312" %>
    <%@page import="java.io.*,java.util.*,java.sql.*,chapter5.*" %>
    <%@page errorPage="error.jsp" %>
    <jsp:useBean id="pages" scope="page" class="chapter5.pages" />

    <html>
    <head><title>JDBC访问数据库实例</title>
    <script  type="text/javascript">
    function doCheck(){var obj= document.getElementsByName("pkey"); 
    var len=obj.length;
    var arr = new Array();
    var ss='';   
    alert("数组长度"+obj.length);
    for(var i = 0; i < obj.length; i++) 

    if(obj[i].checked) 

    arr[i]=obj[i].value;
    ss+=arr[i]+",";
    // alert(arr[i]);} }
     alert("ss="+ss);
     window.location.href="updateBook.jsp?bookno="+ss;
    }
    </script>
    <script type="text/javascript">
      function SetArticleId(o, i) {
      if (o.checked) {
      AddCookie(i)
      }
      else {
      RemoveCookie(i)
      }
      }
      function SetCookie(name, value) {
      document.cookie = name + "=" + escape(value);
      }
      function GetCookie(name) {
      if (document.cookie.length > 0) {
      c_start = document.cookie.indexOf(name + "=");
      if (c_start != -1) {
      c_start = c_start + name.length + 1;
      c_end = document.cookie.indexOf(";", c_start);
      if (c_end == -1) c_end = document.cookie.length;
      return unescape(document.cookie.substring(c_start, c_end));
      }
      }
      return "";
      }
      function AddCookie(i) {
      d = GetCookie("ArticleId");
      if (d == "") d = "|";
      if (d.indexOf("|" + i + "|") == -1) {
      d += i + "|";
      SetCookie("ArticleId", d);
      }
      }  function RemoveCookie(i) {
      d = GetCookie("ArticleId");
      var reg = new RegExp("\\|" + i + "\\|");
      if (reg.test(d)) {
      d = d.replace(reg, "|");   
      SetCookie("ArticleId", d);
      }   
      }   
      </script> </head>
      <h2>JDBC访问数据库实现分页</h2>
      <h3>所有的书籍信息如下</h3>
       <body>
       <%
       //String Articles=request.Cookies("ArticleId");    %>
       <%
       Cookie[] cookieList= request.getCookies();
       Cookie scookieList=null;
    String Articles;
        for(int j=0;j<cookieList.length;j++){
           scookieList=cookieList[j];
          Articles =scookieList.getValue();
           } 
           Articles="1";
        %>
        <a href="newBook.jsp"><b>新增书籍</b></a>
        <input type="button" value="修改书籍" onClick="doCheck()">
        <a href="updateBook.jsp"><b>修改书籍</b></a>
        <form action="delete.jsp" method="GET">
          <table border="1">
          <tr>
            <td><b>选择</b></td>
            <td><b>编号</b></td>
            <td><b>书籍名</b></td>
            <td><b>书籍译作者</b></td>
            <td><b>书籍定价</b></td>
            <td><b>出版日期</b></td>
          </tr>
          <%
              String CountQuery="select count(*) from book";  
              String query = "select * from book";  
              ResultSet rs = pages.querySql(CountQuery,query,request);  
              String footer = pages.PageFooter(); 
           
              if (pages.intPageCount>0)  
              {  
                 int i=0; 
                 while (rs.next())  
                 {  
                   i++;  
                   if (i>((pages.intPage-1)*pages.intPageSize) &&(i<=pages.intPage*pages.intPageSize))  
                   {
          %>      <tr>
           <td>
             <!--   <input type="checkbox" name="pkey" value="<%=String.valueOf(rs.getInt("no")) %>" />
     -->
     <input type="checkbox" name="ArticleId" onclick="SetArticleId(this,<%=String.valueOf(rs.getInt("no"))%>);" <%if (Articles.indexOf(String.valueOf(rs.getInt("no")))>0) {String checked="checked"; } %>/> 
             </td>    
            <td><%= rs.getInt("no") %></td>
            <td><%= rs.getString("bookName") %></td>
            <td><%= rs.getString("author") %></td>
            <td><%= rs.getDouble("price") %></td>
            <td><%= rs.getTimestamp("puDate")%></td> 
          
           </tr>
           <%
                    }
                  }
               }
               out.println("<tr><td colspan=2>"+footer+"</td></tr>");
               rs.close(); 
               pages.close_all();
           %>       
          </table>
          <input type="submit" name="submit" value="删除选中的书籍">
        </form>
       </body>
    </html>
    我把你给的脚本都用上了,为什么还是不行呢?