在页面上添加了多个checkBox,并且添加了一个删除按钮,当勾选了多个数据时,点击删除选中按钮可以将这些记录删除。
问题:
- 怎样控制多选框的全选与全不选。
- 怎样控制将选中商品删除
a) 将选中的商品的id传递到服务器端
b) 在服务器端通过QueryRunner的batch方法根据id值来批量删除。
解决全选与全不选
//处理全选与全不选 function selectAllCk() { var flag = document.getElementById("allck").checked; //得到多选框是否被选中了,如果为true,代表选中,如果为false,代表取消。 var cks = document.getElementsByName("ck");//获取到所有名称叫ck的元素。 for ( var i = 0; i < cks.length; i++) { cks[i].checked = flag;//将所有的name=ck的checkbox的checked值设置为flag. } }
解决怎样将选中的商品的id传递到服务器端操作。
通过js代码 location.href来完成提交,这种操作,需要我们通过js代码自己来获取请求参数,并拼接出来。
//删除选中 function delSelect() { var url = "${pageContext.request.contextPath}/delSelect?"; var cks = document.getElementsByName("ck");//获取到所有名称叫ck的元素。 for ( var i = 0; i < cks.length; i++) { if (cks[i].checked) { //得到选 中的checkbox url += "id=" + (cks[i].value) + "&"; } } url=url.substring(0,url.length-1); location.href=url; //这段代码就相当于超连接的href属性。 //document.getElementById("ds").submit(); }
- 可以直接将ck这些元素放置在一个表单中,当点击删除选中按钮时,只需要
//document.getElementById("ds").submit();
-
删除操作流程
- 在DelSelectServlet中通过request.getParameterValues()获取到了所有要删除的商品的id.
- 调用ProductService,在调用ProductDao中的delSelectById方法来完成删除操作
- 通过QueryRunner的batch方法进行批量删除
Batch(String, sql,Object[][] parma)
问题:我们得到的是一个String[] 怎样将数据转换成二维数组。
假设一维数组 {1,2,3} arr1
我们想要的二维数组是 {{1},{2},{3}} arr2
for(int i=0;i<arr2.length;i++){
arr2[i][0]=arr1[i]
}