分页实现复选框的选择

guoxuejing2009 2011-05-07 11:30:01
各位大虾,我想实现的功能是:在分页的页面上是多条复选框的记录,假设我在第一页上选择了三条了记录,然后点击下一页,又选择了两条记录,然后点击上一页,原来选择的三条记录前面的对号消失了,处于未选中状态,怎么才能实现点击上一页,原来的记录还处于选中状态。大虾们帮帮忙
...全文
768 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoxuejing2009 2011-05-12
  • 打赏
  • 举报
回复
没人给顶了?自己顶一下
guoxuejing2009 2011-05-10
  • 打赏
  • 举报
回复
我现在的程序是这样的,但是还是不行
<%@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>
我把你给的脚本都用上了,为什么还是不行呢?
guoxuejing2009 2011-05-10
  • 打赏
  • 举报
回复
checked='checked'这一句老是出错,是不是应该改成String checked="checked";啊
孟子E章 2011-05-09
  • 打赏
  • 举报
回复
jsp就使用indexOf判断啊
guoxuejing2009 2011-05-09
  • 打赏
  • 举报
回复
我是用的jsp,问题还没有解决,但是仍然谢谢各位大虾了~~~~
孟子E章 2011-05-09
  • 打赏
  • 举报
回复
InStr就是去判断id是否已经在Cookie中存在
guoerwei 2011-05-08
  • 打赏
  • 举报
回复
记入cookie或者记入session啥的么……

或者直接把页面合并,放到不同的DIV里,比如显示第一页就只显示第一个DIV里的复选框,点击下一页后隐藏第一个DIV,显示第二个DIV这样
中远 2011-05-08
  • 打赏
  • 举报
回复
如果翻页时页面未刷新,可以把选择的内容保存到js变量中;
否则可以存到cookie中;
页面显示时读取选择项记录再还原
fengqipiaobo 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 guoerwei 的回复:]

或者直接把页面合并,放到不同的DIV里,比如显示第一页就只显示第一个DIV里的复选框,点击下一页后隐藏第一个DIV,显示第二个DIV这样
[/Quote]

直接用js来控制div的显隐! 如果数据不多的话,值得使用!
guoxuejing2009 2011-05-08
  • 打赏
  • 举报
回复
<%if InStr(Articles,"|" & rs("ArticleId")%> & "|")>0 Then Response.Write "checked='checked'"%>这句话能给解释一下吗,尤其是InStr()不是很明白,谢谢你帖的代码
孟子E章 2011-05-08
  • 打赏
  • 举报
回复
<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'"%> />

guoxuejing2009 2011-05-08
  • 打赏
  • 举报
回复
能帖一段你写的代码吗,我想看看怎么使用的
guoxuejing2009 2011-05-08
  • 打赏
  • 举报
回复
对,我就是想实现你给我这个实例的效果,cookie我不是很会使用 啊
孟子E章 2011-05-08
  • 打赏
  • 举报
回复
做法就是,在你点checkbox的时候,同时进行记录、删除cookie内的值,

翻页的时候,生成页面的时候读取出来,如果本页的有选择的,就设置checked=true.

这里有asp.net现成的例子,。做法基本类似
http://dotnet.aspx.cc/file/Cross-Pages-Checked-GridView.aspx

实例
http://dotnet.aspx.cc/Exam/GridViewMultiSelect.aspx

guoxuejing2009 2011-05-08
  • 打赏
  • 举报
回复
能给点实际的例子看看吗,不是很明白啊
孟子E章 2011-05-08
  • 打赏
  • 举报
回复
记入cookie是好的做法,div是不行的
guoxuejing2009 2011-05-08
  • 打赏
  • 举报
回复
大虾们,小弟还是不是很明白,怎么用js来隐藏div啊,数据是分页的,我想用js来实现获取的数据,但只能获取当前页的数据,翻页后原来选择的获取不到啊

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧