虽然这个例子是jsp,但是即使用.net或其他语言开发时原理也一样,稍微改动一下就可以了
批量删除前台页面是使用一个 复选框
<input type="checkbox" name="batDel" value="<%=ID1%>" > 删除选定
<input type="submit" class="del" onClick="javascript:goto()" value="删除">删除按钮
function goto(){
FormEdit.action="louHaoBatDel.jsp";//这里是指定处理所在页面
FormEdit.submit();
}
注意这里的"<%=ID1%>"是你要删除记录所在行的ID(主键)
一般是通过循环输出若干个项在页面上,把上面的复选框代码放置其中,就可以在每个项中都添加复选框。因为我的项目代码行较多,所以这里给出这个提示,不贴出来了。
接着是后台处理页面louHaoBatDel.jsp,我把代码直接写在页面上了(因为比较简单,就不通过servlet封装在类)
注意:后台代码我通过自己封装的数据库操作包,大家需要自己更改成纯JDBC方式调用存储过程
<%
@ page contentType
=
"
text/html; charset=gb2312
"
language
=
"
java
"
import
=
"
java.sql.*
"
import
=
"
java.util.regex.*
"
import
=
"
search.db.*
"
errorPage
=
""
%>
<
html xmlns
=
"
http://www.w3.org/1999/xhtml
"
>
<
head
>
<
title
>
批量删除后台处理页面
/
title
>
</
head
>

<
body
>
<%
request.setCharacterEncoding(
"
gb2312
"
);
String[] values
=
request.getParameterValues(
"
batDel
"
);
String arrID
=
""
;
//
包含要删除的ID,格式 1,3,4,2,5,323
if
((values
==
null
)
||
(
""
.equals(values)))
//
当未选定时不执行任何操作

...
{
response.sendRedirect("lhglIframe.jsp");
}
else

...
{
for(int i=0;i<values.length;i++)

...{
arrID+=values[i]+",";
}
//out.print(arrID);
String procName="kf.P_BatchDelFloorModel";
proc pr=new proc();
pr.setProcname(procName);
pr.addParam("@arrID",param.TYPE_VARCHAR2,arrID,param.IN);
if(pr.execute())

...{
out.print("<script>alert('批量删除成功')</script>");
response.sendRedirect("lhglIframe.jsp");
}
else

...{
out.print("<script>alert('批量删除失败')</script>");
}
}
%>

</
body
>

</
html
>
最后存储过程非常简单:
/**/
/*
* @Tabel:kanfang360.FloorModel
*`@author:Linc
* @Time:2008.5.27.8:20
* @Func:Batch delete
* @iuput para format: 1,2,3,4
*/
CREATE
proc
kf.P_BatchDelFloorModel
@arrID
varchar
(
8000
)

as

delete
from
kanfang360.FloorModel
where
'
,
'
+
@arrID
LIKE
'
,%
'
+
cast
(
[
ID
]
as
varchar
)
+
'
,%
'


--
exec kf.P_BatchDelFloorModel '1,2,3,11'
--
select * from kanfang360.FloorModel
GO