您的位置:首页 > Web前端 > JavaScript

[转]使用JAVASCRIPT作为ASP的服务器端语言(二)

2009-05-13 04:19 281 查看
上次我使用JAVASCRIPT将记录集转换成数组,然后逐一输出数据。但是遗留下来一个问题就是如果数据库中的数据很多,那么最好的解决方案还是采取传统的分页方式。这次我就来创建一个分页类。

step 1 创建分页类文件data_grid.asp,代码如下:

<%
//构造函数
//参数 : pagesize - 每页显示最多记录数 rs_arr - 记录集数组
function data_grid(pagesize,rs_arr) {
//属性
this.pagesize = pagesize;
this.rs_arr = rs_arr;
this.start_pagecount = "";
this.end_pagecount = "";
this.count = this.rs_arr.length;
this.page = 0;
this.flag = "";
}

//得到当前页
data_grid.prototype.get_page = function() {
if(this.is_empty(Request.QueryString("page")) || isNaN(Request.QueryString("page")) || Request.QueryString("page") == "" || parseInt(Request.QueryString("page"))<0)
this.page = 0;
else if(parseInt(Request.QueryString("page")) >= this.myint(this.count/this.pagesize))
this.page = this.myint(this.count/this.pagesize -1);
else
this.page = Request.QueryString("page");
}

data_grid.prototype.is_empty = function(obj) {
return !(String(obj)!= "" && String(obj) != "undefined");
}

//方法
/*----------------------------------------------*/
//函数名:set_pagecount()
//参数:pagesize - 每页显示最多记录数
//作用:设置每页显示多少条记录
//flag = 1 是最后一页
//flag = 2 是第一页
//flag = 3 既是第一页,又是最后一页
//返回值:此页循环上限
/*----------------------------------------------*/
data_grid.prototype.set_pagecount = function() {
var n,s;
this.start_pagecount = parseInt(this.page) * this.pagesize;
//当到了这页的时候还剩余多少条记录
s = this.count - parseInt(this.page) * this.pagesize;
//如何循环?
if (parseInt(this.page) == 0 && s <= this.pagesize) { // 既是第一页,又是最后一页(也就是只有一页)
this.flag = 3;
n = this.count;
} else if(parseInt(this.page) != 0 && s <= this.pagesize) { //最后一页
this.flag = 1;
n = this.count;
} else { //第一页
this.flag = 2;
n = (parseInt(this.page)+1) * this.pagesize;
}
this.end_pagecount = n;
}

/*----------------------------------------------*/
//函数名:show_pagelink()
//参数 : 无
//作用 : 显示分页链接
//返回值:无
/*----------------------------------------------*/
data_grid.prototype.show_pagelink = function(page_name,para) {
if (typeof(para) == "undefined") para = "";
Response.Write ("<ul>");
Response.Write ("<li>共<font color='red'>" + this.count + "</font>条 ");
Response.Write ("共<font color='red'>" + this.myint(this.count/this.pagesize) + "</font>页/每页" + this.pagesize + "条 ");
Response.Write ("当前第<font color='red'>" + (parseInt(this.page)+1) + "</font>页</li>");
//显示首页
if (this.flag != 3 && parseInt(this.page) != 0)
Response.Write ("<li><a href=' " +page_name + "?page=" + 0 + para + " ' >首 页</a></li>");
else
Response.Write ("<li class=\"cur\">首 页</li>");

//显示上一页
if (parseInt(this.page)>0)
Response.Write ("<li><a href=' " +page_name + "?page=" + (parseInt(this.page)-1) + para + " ' >上一页</a></li>");
else
Response.Write ("<li class=\"cur\">上一页</li>");

//显示下一页
if (this.flag ==2)
Response.Write ("<li><a href=' " + page_name + "?page=" + (parseInt(this.page)+1) + para + " ' >下一页</a></li>");
else
Response.Write ("<li class=\"cur\">下一页</li>");

//显示末页
if (this.flag != 1 && this.flag != 3)
Response.Write ("<li><a href=' " + page_name + "?page=" + this.myint((this.count+1)/this.pagesize -1) +para + " ' >末 页</a></li>");
else
Response.Write ("<li class=\"cur\">末 页</li>");

var str_html = "";
str_html = "<li><form method=\"post\" onsubmit=\"document.location = ' ";
str_html += page_name;
str_html += "?page='+(this.page.value-1)+'";
str_html += para;
str_html += "';return false;\">";
str_html += "<input type=\"text\" name=\"page\" size=\"2\" value=\"";
str_html += (parseInt(this.page)+1);
str_html += "\" /></form></li>";
Response.Write(str_html);
Response.Write ("</ul>");
}

data_grid.prototype.myint = function (avalue) {
var rvalue;
if (avalue > parseInt(avalue))
rvalue = parseInt(avalue) + 1;
else
rvalue = parseInt(avalue);
return rvalue;
}
%>

以上都有注释,相信有一定基础的朋友能够读懂代码。

step 2 有了分页类,使用起来就简单多了。修改上次的view.asp文件,代码如下:

<!--#Include file="class_database.asp"-->
<!--#Include file="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服务器端脚本来实现数据库操作,希望对大家有所帮助,由于时间仓促,可能会有地方还需改进。在此基础上自己还可以加一些其他的方法,比如数据的增、删、改等等,操作数据库同样很方便。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐