不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
使用Javascript面向对象的思想编写ASP[下]
编辑:dnawo 日期:2007-09-23
上次我使用Javascript将记录集转换成数组,然后逐一输出数据。但是遗留下来一个问题就是如果数据库中的数据很多,那么最好的解决方案还是采取分页方式。注意了此处的分页和传统的记录集分页是有区别的。记住,这里是采用数组分页。下面创建一个分页类。
step 1 创建分页类文件class_data_grid.asp,代码如下:
以上都有注释,相信有一定基础的朋友能够读懂代码。
step 2 有了分页类,使用起来就简单多了。修改上次的view.asp文件,代码如下:
OK!全部完成了。这样页面代码逻辑思路清晰,也不会有其他乱七八糟的冗余代码了。
以上就是使用Javascript服务器端脚本来实现数据库操作,希望对大家有所帮助,由于时间仓促,可能会有地方还需改进。在此基础上自己还可以加一些其他的方法,比如数据的增、删、改等等,操作数据库同样很方便。本例采用的思路是面向对象,这样也符合代码规范,其实大家如果了解PHP的面向对象的编程思路,应该一看就知道它和PHP的面向对象编程思路实际上是完全一致的。
step 1 创建分页类文件class_data_grid.asp,代码如下:
复制内容到剪贴板
程序代码

<%
/*----------------------------------------------*/
//分页类data_grid
//参数 : pagesize - 每页显示最多记录数 rs_arr - 记录集数组
/*----------------------------------------------*/
function data_grid(pagesize,rs_arr) {
//公共属性
this.pagesize = pagesize;
this.rs_arr = rs_arr;
this.start_pagecount = "";
this.end_pagecount = "";
//私有属性
var count = this.rs_arr.length;
var page = 0;
var flag = "";
/*----------------------------------------------*/
//公共方法:get_page()
//参数 : 无
//作用 : 得到当前页并设置当前页
//返回值:无
/*----------------------------------------------*/
this.get_page = function() {
if(is_empty(Request.QueryString("page")) || isNaN(Request.QueryString("page")) || Request.QueryString("page") == "" || parseInt(Request.QueryString("page"))<0)
page = 0;
else if(parseInt(Request.QueryString("page")) >= myint(count/this.pagesize))
page = myint(count/this.pagesize -1);
else
page = Request.QueryString("page");
}
/*----------------------------------------------*/
//私有方法:is_empty()
//参数 : 无
//作用 : 判断是否捕获到参数
//返回值:无
/*----------------------------------------------*/
var is_empty = function(obj) {
return !(String(obj) != "" && String(obj) != "undefined");
}
/*----------------------------------------------*/
//私有方法:myint()
//参数 : 数值
//作用 : 得到整数
//返回值:整数
/*----------------------------------------------*/
var myint = function (avalue) {
var rvalue;
if (avalue > parseInt(avalue))
rvalue = parseInt(avalue) + 1;
else
rvalue = parseInt(avalue);
return rvalue;
}
/*----------------------------------------------*/
//公共方法:set_pagecount()
//参数:pagesize - 每页显示最多记录数
//作用:设置每页显示多少条记录
//flag = 1 是最后一页
//flag = 2 是第一页
//flag = 3 既是第一页,又是最后一页
//返回值:此页循环上限
/*----------------------------------------------*/
this.set_pagecount = function() {
var n,s;
this.start_pagecount = parseInt(page) * this.pagesize;
//当到了这页的时候还剩余多少条记录
s = count - parseInt(page) * this.pagesize;
//如何循环?
if (parseInt(page) == 0 && s <= this.pagesize) { // 既是第一页,又是最后一页(也就是只有一页)
flag = 3;
n = count;
} else if(parseInt(page) != 0 && s <= this.pagesize) { //最后一页
flag = 1;
n = count;
} else { //第一页
flag = 2;
n = (parseInt(page)+1) * this.pagesize;
}
this.end_pagecount = n;
}
/*----------------------------------------------*/
//公共方法:show_pagelink()
//参数 : page_name - 页面名称 para - 参数
//作用 : 显示分页
//返回值:无
/*----------------------------------------------*/
this.show_pagelink = function(page_name,para) {
if (typeof(para) == "undefined") para = "";
Response.Write ("<div>");
Response.Write ("共<font color='red'>" + count + "</font>条 ");
Response.Write ("共<font color='red'>" + myint(count/this.pagesize) + "</font>页/每页" + this.pagesize + "条 ");
Response.Write ("当前第<font color='red'>" + (parseInt(page)+1) + "</font>页");
//显示首页
if (flag != 3 && parseInt(page) != 0)
Response.Write (" <a href=' " +page_name + "?page=" + 0 + para + " ' >首 页</a>");
else
Response.Write (" 首 页");
//显示上一页
if (parseInt(page)>0)
Response.Write (" <a href=' " +page_name + "?page=" + (parseInt(page)-1) + para + " ' >上一页</a>");
else
Response.Write (" 上一页");
//显示下一页
if (flag ==2)
Response.Write (" <a href=' " + page_name + "?page=" + (parseInt(page)+1) + para + " ' >下一页</a>");
else
Response.Write (" 下一页");
//显示末页
if (flag != 1 && flag != 3)
Response.Write (" <a href=' " + page_name + "?page=" + myint((count+1)/this.pagesize -1) +para + " ' >末 页</a>");
else
Response.Write (" 末 页");
var begin_page = 0;
var end_page = myint(count/this.pagesize);
if(end_page >= 4) {
if(parseInt(page) >= 3) {
begin_page = parseInt(page) - 2;
if (parseInt(page) <= (end_page - 2)) {
end_page = parseInt(page) + 2;
}else{
end_page = end_page;
begin_page = end_page - 2;
}
}else{
begin_page = 0;
end_page = 4;
}
}
var str_html = "";
for(var i=begin_page;i<end_page;i++) {
if(i == parseInt(page)) {
str_html += " <span class=\"pageno\">";
str_html += (i+1);
str_html += "</span> ";
}else{
str_html += " <a href=\"" + page_name + "?page="
str_html += i;
str_html += para;
str_html += "\" class=\"page\"> ";
str_html += (i+1);
str_html += "</a> ";
}
}
str_html += "<form method=\"post\" onsubmit=\"document.location = ' ";
str_html += page_name;
str_html += "?page='+(page.value-1)+'";
str_html += para;
str_html += "';return false;\">";
str_html += "<input type=\"text\" name=\"page\" size=\"2\" value=\"";
str_html += (parseInt(page)+1);
str_html += "\" /></form>";
Response.Write(str_html);
Response.Write ("</div>");
}
}
%>
/*----------------------------------------------*/
//分页类data_grid
//参数 : pagesize - 每页显示最多记录数 rs_arr - 记录集数组
/*----------------------------------------------*/
function data_grid(pagesize,rs_arr) {
//公共属性
this.pagesize = pagesize;
this.rs_arr = rs_arr;
this.start_pagecount = "";
this.end_pagecount = "";
//私有属性
var count = this.rs_arr.length;
var page = 0;
var flag = "";
/*----------------------------------------------*/
//公共方法:get_page()
//参数 : 无
//作用 : 得到当前页并设置当前页
//返回值:无
/*----------------------------------------------*/
this.get_page = function() {
if(is_empty(Request.QueryString("page")) || isNaN(Request.QueryString("page")) || Request.QueryString("page") == "" || parseInt(Request.QueryString("page"))<0)
page = 0;
else if(parseInt(Request.QueryString("page")) >= myint(count/this.pagesize))
page = myint(count/this.pagesize -1);
else
page = Request.QueryString("page");
}
/*----------------------------------------------*/
//私有方法:is_empty()
//参数 : 无
//作用 : 判断是否捕获到参数
//返回值:无
/*----------------------------------------------*/
var is_empty = function(obj) {
return !(String(obj) != "" && String(obj) != "undefined");
}
/*----------------------------------------------*/
//私有方法:myint()
//参数 : 数值
//作用 : 得到整数
//返回值:整数
/*----------------------------------------------*/
var myint = function (avalue) {
var rvalue;
if (avalue > parseInt(avalue))
rvalue = parseInt(avalue) + 1;
else
rvalue = parseInt(avalue);
return rvalue;
}
/*----------------------------------------------*/
//公共方法:set_pagecount()
//参数:pagesize - 每页显示最多记录数
//作用:设置每页显示多少条记录
//flag = 1 是最后一页
//flag = 2 是第一页
//flag = 3 既是第一页,又是最后一页
//返回值:此页循环上限
/*----------------------------------------------*/
this.set_pagecount = function() {
var n,s;
this.start_pagecount = parseInt(page) * this.pagesize;
//当到了这页的时候还剩余多少条记录
s = count - parseInt(page) * this.pagesize;
//如何循环?
if (parseInt(page) == 0 && s <= this.pagesize) { // 既是第一页,又是最后一页(也就是只有一页)
flag = 3;
n = count;
} else if(parseInt(page) != 0 && s <= this.pagesize) { //最后一页
flag = 1;
n = count;
} else { //第一页
flag = 2;
n = (parseInt(page)+1) * this.pagesize;
}
this.end_pagecount = n;
}
/*----------------------------------------------*/
//公共方法:show_pagelink()
//参数 : page_name - 页面名称 para - 参数
//作用 : 显示分页
//返回值:无
/*----------------------------------------------*/
this.show_pagelink = function(page_name,para) {
if (typeof(para) == "undefined") para = "";
Response.Write ("<div>");
Response.Write ("共<font color='red'>" + count + "</font>条 ");
Response.Write ("共<font color='red'>" + myint(count/this.pagesize) + "</font>页/每页" + this.pagesize + "条 ");
Response.Write ("当前第<font color='red'>" + (parseInt(page)+1) + "</font>页");
//显示首页
if (flag != 3 && parseInt(page) != 0)
Response.Write (" <a href=' " +page_name + "?page=" + 0 + para + " ' >首 页</a>");
else
Response.Write (" 首 页");
//显示上一页
if (parseInt(page)>0)
Response.Write (" <a href=' " +page_name + "?page=" + (parseInt(page)-1) + para + " ' >上一页</a>");
else
Response.Write (" 上一页");
//显示下一页
if (flag ==2)
Response.Write (" <a href=' " + page_name + "?page=" + (parseInt(page)+1) + para + " ' >下一页</a>");
else
Response.Write (" 下一页");
//显示末页
if (flag != 1 && flag != 3)
Response.Write (" <a href=' " + page_name + "?page=" + myint((count+1)/this.pagesize -1) +para + " ' >末 页</a>");
else
Response.Write (" 末 页");
var begin_page = 0;
var end_page = myint(count/this.pagesize);
if(end_page >= 4) {
if(parseInt(page) >= 3) {
begin_page = parseInt(page) - 2;
if (parseInt(page) <= (end_page - 2)) {
end_page = parseInt(page) + 2;
}else{
end_page = end_page;
begin_page = end_page - 2;
}
}else{
begin_page = 0;
end_page = 4;
}
}
var str_html = "";
for(var i=begin_page;i<end_page;i++) {
if(i == parseInt(page)) {
str_html += " <span class=\"pageno\">";
str_html += (i+1);
str_html += "</span> ";
}else{
str_html += " <a href=\"" + page_name + "?page="
str_html += i;
str_html += para;
str_html += "\" class=\"page\"> ";
str_html += (i+1);
str_html += "</a> ";
}
}
str_html += "<form method=\"post\" onsubmit=\"document.location = ' ";
str_html += page_name;
str_html += "?page='+(page.value-1)+'";
str_html += para;
str_html += "';return false;\">";
str_html += "<input type=\"text\" name=\"page\" size=\"2\" value=\"";
str_html += (parseInt(page)+1);
str_html += "\" /></form>";
Response.Write(str_html);
Response.Write ("</div>");
}
}
%>
以上都有注释,相信有一定基础的朋友能够读懂代码。
step 2 有了分页类,使用起来就简单多了。修改上次的view.asp文件,代码如下:
复制内容到剪贴板
程序代码

<!--#Include file="class_database.asp"-->
<!--#Include file="class_data_grid.asp"-->
<%
var database_obj = new database();
//数据库连接
database_obj.connection();
str_sql = "Select CourseID,CourseName,UpdateTime,CommDateTime,Comm,Hit From Course order by UpdateTime Desc";
var tmp_arr = database_obj.query(str_sql);
var data_grid_obj = new data_grid(10,tmp_arr);
data_grid_obj.get_page();
data_grid_obj.set_pagecount();
for(var y=data_grid_obj.start_pagecount;y<data_grid_obj.end_pagecount;y++) {
Response.Write("CourseID: "+tmp_arr[y][0]+", CourseName: "+tmp_arr[y][1]+ ",UpdateTime: "+tmp_arr[y][2]+"<br />");
}
para = "&keyword=aaa";
data_grid_obj.show_pagelink("view.asp",para);
database_obj.close_database();
%>
<!--#Include file="class_data_grid.asp"-->
<%
var database_obj = new database();
//数据库连接
database_obj.connection();
str_sql = "Select CourseID,CourseName,UpdateTime,CommDateTime,Comm,Hit From Course order by UpdateTime Desc";
var tmp_arr = database_obj.query(str_sql);
var data_grid_obj = new data_grid(10,tmp_arr);
data_grid_obj.get_page();
data_grid_obj.set_pagecount();
for(var y=data_grid_obj.start_pagecount;y<data_grid_obj.end_pagecount;y++) {
Response.Write("CourseID: "+tmp_arr[y][0]+", CourseName: "+tmp_arr[y][1]+ ",UpdateTime: "+tmp_arr[y][2]+"<br />");
}
para = "&keyword=aaa";
data_grid_obj.show_pagelink("view.asp",para);
database_obj.close_database();
%>
OK!全部完成了。这样页面代码逻辑思路清晰,也不会有其他乱七八糟的冗余代码了。
以上就是使用Javascript服务器端脚本来实现数据库操作,希望对大家有所帮助,由于时间仓促,可能会有地方还需改进。在此基础上自己还可以加一些其他的方法,比如数据的增、删、改等等,操作数据库同样很方便。本例采用的思路是面向对象,这样也符合代码规范,其实大家如果了解PHP的面向对象的编程思路,应该一看就知道它和PHP的面向对象编程思路实际上是完全一致的。






评论: 0 | 引用: 0 | 查看次数: 4390
发表评论
请登录后再发表评论!