腾达首页 网站建设 精典案例 网络产品 行业新闻 走进腾达 客户服务
腾达网络--先建站后付款 专业的网站建设,网站优化推广服务.在线QQ交流:82040118 271508598 739999813 电话:020-39995170 34515904
您当前的位置:腾达网络常见问题 → 文章内容
详解如何在后台管理中进行批量操作(ASP+Script)
作者:佚名  来源:本站整理  发布时间:2008-4-16 16:24:00  点击:

〓简介〓
我们常看到有些优秀的后台管理系统都是可以对信息批量操作的,比如点击一个复选框,全部选中(取消选中),然后一个确定按钮就可以全部删除(更新)那些信息了,其实这也不难,只是需要了一段小脚本……

〓正文〓
比如表单页面里全选的HTML语句是这样的

<input type="checkbox" name="chkAll" value="on" onClick="CheckAll(this.form)">《全部选中》

这里就定义了一个CheckAll函数, this.form 表示动作当前的表单里,

onClick的意思就是当鼠标按下放开执行这样一个点击动作后激活CheckAll函数

而这个CheckAll函数的源代码也很简单:
========================================================
<script>
function CheckAll(form){
for (var i=0;i<form.elements.length;i++){
var e = form.elements[i];
if (e.name != 'chkAll')
e.checked = form.chkAll.checked;
}
}
</script>
===================================================
里面仅仅是一个FOR(initallization; test; increment) 典型的JS循环语句

initallization 表示循环开始付值一次这里是 var i=0 由于JS语法是强制每个变

量必须声明后才能使用的,而声明JS变量的声明方式可以有两种一种是先声明,

换行后付值比如:

var i, a
i = 1
a = 0

而另一种则是在同一行同时声明并付值 比如 var i = 0 当然了,我这里用的是后者

(不行了,老娘喊我吃饭了,待会儿回来接着说……)

…………吃好了,可以接着说了, 下面这句是i<form.elements.length,理论上讲

form.elements.length是获取当前表单里总共有多少个复选框(checkbox)获取的值是个整数类型

与i作比较,如果i小于他,则执行循环语句里的内容,后面的 i++ 则表示条件成立后每循环一次

i的数值累加一,这样当i累加到大于form.elements.length取得的数值后退出循环!

值得注意的是form.elements.length所获得的复选框的个数是包括那个form表单里

《全部选中》的那个复选框的

<input type="checkbox" name="chkAll" value="on" onClick="CheckAll(this.form)">《全部选中》


所以接下来的语句 var e = form.elements[i]; 接着声明一个变量,记录循环到了哪个复选框

而全部选中的那个复选框名称为chkAll,所以我们对复选框名称(name)不为chkAll的

进行操作 if (e.name != 'chkAll')  

!= 在JS中表示不等于,后面的语句 e.checked = form.chkAll.checked; 让所有的复选框的状态

都等于表单中chkAll的状态(checked表示选中),这里需要注意的是JS当中对变量命名的大小写

是敏感的(也就是区分大小写,所以chkAll和chkall脚本执行当中或把它解释成两个不同的名字)

至此批量操作脚本方面的语法就全部解释完了,下面是ASP方面要注意的

由于checkbox复选框获取的值是以数组的形式存在的比如我们一个名称为ID记录数据库内容ID自动编号


复选框,用 ID = Request.Form("ID") 取得的值直接不做处理显示出来会是以数组形式存在的,

ID = "3,22,32,66,6543" 那么在ASP语句里想以此为条件批量执行操作则必须把它们以单个数值的形式

提取出来,当然我们可以很简单地做到比如你在SQL查询语句里将等号(=)替换成(in)旁边再多加

两个括号就行了,比如原来的删除语句 sql = "delete id from table where id = " & id & ""

现在批量删除只要改成 sql = "delete id from table where id in (" & id & ")"  就OK了!

可是如果我们是要用ID这个数组里的每个数值为条件去查询数据库相关内容 用 where  in  

就不太好操作了,我们这时候需要将ID这个数组以循环形式单独提取出来,

一一进行操作,那么我们还需要

多用到一个变量(IDD),一个VBS内置函数(Split)和一个循环语句(For Each …… Next)

当然变量IDD是我们自己取的名字,您可以根据喜好自己定义,函数Split的作用是返回指定字符串的一维数组

For Each …… Next的作用是依据指定的数字重复循环执行一次,当我们用ID = Request.Form("ID")

获得一个数组的时候 紧接下面 IDD = Split(ID,",") 或者这个字符串的一维数组

接着

For ID Each in IDD

执行你的代码, 而这期间代码的条件 你就可以用等号了 where id = " & id & ""

Next


这样的代码本来就是万无一失的,可是我还是遇到了一个让我头疼半天的问题,还在已经找到原因解决了

下面我告诉你吧免得以后碰到就不会不知所措了……

Request.Form("ID") 获得的字符串"2,33,454,3222" 本来中间的逗号分隔符,都应该是英文半角的这样Split才能

辨认,而我有次获取出来的居然都是用中文半角逗号的分隔符"2,24,55,342,322",每次在调试的时候都告诉我说

数据溢出,搞不懂,后来我用VBS的Replace函数作了一下替换就OK了,就是在 ID = Request.Form("ID") 的下面

加一句 ID = Replace(ID,",",",")  将ID字符串里的中文逗号全部替换成英文半角的,呵呵,也怪我懒

没有追根溯源看看到底为什么会全变成中文半角的逗号!如果哪位高手知道的话请告知小弟,在下感激不尽!

上一条:中国珠宝设计协会签约腾达网络
下一条:在WEB项目中多维下拉菜单的实现技巧和方法
腾达首页 | 网站建设 | 虚拟主机 | 域名注册 | 企业邮局 | 关于我们 | 服务报价 | 联系我们 | 建站经验交流 | 中国OK商务网 | 中国热线 | 名索网
领航网B2B
中国跑酷网
外贸建站
番禺建站
深圳建网站
广州建网站
pps奥运视频直播
双色球
双色球
免费推广
レーシック 失敗
インプラント
賃貸 事務所
出会い
格安航空券 国内
ERP
不動産 求人
固定ip
くりっく365 比較
ドレス
广州分类信息
更多连接
更多连接
更多连接
更多连接
更多连接
更多连接
Copyright © 2005-2008 广州腾达网络科技有限公司 All Rights Reserved 网址:http://www.jz800.com
地址:广州市番禺区富华中路75号403 联系电话:020-39995170 34515904 33111194 传真:020-34515904
业务范围:大中小企业网站建设 网络广告设计 网络推广 企业网络商业策划 网络营销 网站建设 企业建站
建站一条龙服务(域名注册 虚拟主机 外贸主机 网站备案 网站维护)电信业务经营许可证号:粤ICP备07010100号