虽然这个例子是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
发表于 @ 2008年05月27日 09:31:59|评论(loading...)|编辑