Dream Maker 老漂 不要有和人斗的心,你要赢的是你自己!

批量(多项)表单提交操作,显示、删除、添加功能

批量删除:

--------------------------------------

<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

实现显示,传递要要显示记录的ID号呀,复选框起相同的名(name=Data_id)
sql= "select   *   from   Table_Name   where   ID   in   ( "   &   request.form( "Data_id ")   &   ") "
实现添加类似


“多项添加”功能

实现添加类似也一样,要添加给相同字段的,起相同的名(name=Field_1),如果两个字段就在起个name=Field_2,依次类推
dim   Field_1,Field_2
Field_1=split(request.form( "Field_1 "), ", ")
Field_2=split(request.form( "Field_2 "), ", ")
……
sql= "select   Field1,Field2   from   Table_Name "
for   i=0   to   ubound(Field_1)
        rs.addnew
        rs(0)=Field_1(i)
        rs(1)=Field_2(i)
        ……
        rs.update
next

Tags: js sql input asp

发布: 老漂 分类: 网站|站长 评论: 0 浏览: 518
留言列表
发表留言
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。