我正在尝试使用复选框从MS访问数据库中删除一行。我将数据库输出到我的JSP页面,每行都有一个复选框。我在获取rowId时遇到问题,并且还将每个复选框与行链接起来。任何帮助将非常感激。谢谢。
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<html>
<head>
<title>DELETE Operation</title>
<script>
checkboxes = document.getElementsByTagName("input");
for (var i = 0; i < checkboxes.length; i++) {
var checkbox = checkboxes[i];
checkbox.onclick = function() {
var currentRow = this.parentNode.parentNode;
var secondColumn = currentRow.getElementsByTagName("td")[1];
alert("My text is: " + secondColumn.textContent );
};
}
</script>
</head>
<body>
<sql:setDataSource
var = "bookdB"
scope = "session"
driver = "sun.jdbc.odbc.JdbcOdbcDriver"
url = "jdbc:odbc:bookdB"
/>
<c:set var="empId" value="103"/>
<sql:update dataSource="${bookdB}" var="count">
DELETE FROM Employees WHERE Id = ?
<sql:param value="${empId}" />
</sql:update>
<sql:query dataSource="${bookdB}" var="result">
SELECT * from Employees;
</sql:query>
<table border="1" width="100%">
<tr>
<th></th>
<th>Emp ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Age</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<form method="post" action="reserve.jsp">
<tr>
<td><input type = "checkbox" value="reserve"></td>
<td><c:out value="${row.id}"/></td>
<td><c:out value="${row.first}"/></td>
<td><c:out value="${row.last}"/></td>
<td><c:out value="${row.age}"/></td>
</tr>
</form>
</c:forEach>
<input type = "submit" value="Delete">
</table>
</body>
</html>
答案 0 :(得分:1)
如果我的猜测是正确的,你想检查行(行)并从UI和数据库中删除它。 从UI中删除表行更容易。首先,您需要为每一行设置id(必须是唯一的)(在您的情况下可能是emp id)。像这样,
<table>
<tr id="${row.id}">
<td><input type = "checkbox" value="${row.id}"></td>
<td><c:out value="${row.id}"/></td>
<td><c:out value="${row.first}"/></td>
<td><c:out value="${row.last}"/></td>
<td><c:out value="${row.age}"/></td>
</tr>
</table>
<input type="button" value="delete" onclick="deleteEmployee('${row.id}');" />
请注意,我不打算刷新页面以取消删除。
在脚本方面,
<script type="text/javascript">
function deleteEmployee(rowid){
input_box = confirm("Are you sure you want to delete this Record?");
if (input_box == true) {
// Output when OK is clicked
$.ajax({
url : 'ur_ajax_url_for_delete'+rowid,
type : "POST",
async : false,
success : function() {
$('#' + rowid).remove();
alert('Record Deleted');
}
});
return false;
} else {
// Output when Cancel is clicked
return false;
}
}
</script>
如果这有帮助,请告诉我。您必须在ajax url中实现编程逻辑以删除所选记录。
已更新: 如果您正在寻找选择多个复选框并想要一次性删除, 您需要使用javascript获取所有选中的复选框值。像这样, 在html中使用复选框的名称属性
<input type = "checkbox" value="${row.id}" name="empIds">
在脚本方面,
var empIds = [];
$('#empIds > :selected').each(function() {
empIds.push($(this).val());
});
在ajax url而不是rowId中使用此empIds。 PS 您需要在java中使用Integer / String数组来获取这些值。
firebug控制台的屏幕截图