按隐藏字段内的ID删除表格行

时间:2013-10-23 07:10:07

标签: jsp servlets html-table

我有一个表在JSP中生成while循环中的行,如下所示(我在每行中使用一个隐藏字段来获取特定ID并将其POST到servlet中)

<tr>
    <td><center><%  out.print(rs1.getString("teamid"));%></center><input name="tid" type="hidden" value="<%out.print(rs1.getString("teamid"));%>"/></td>
    <td><center><%  out.print(rs1.getString("teamname"));%></center></td>
    <td><center><%  out.print(rs1.getString("teaminitials"));%></center></td>
    <td><center><%  out.print(rs1.getString("teamdesc"));%></center></td>  
    <td><center><input type="submit" class="greenbutton" name="delete" value="Delete"/></center></td>
</tr>

在servlet中,

String buttondelete = request.getParameter("delete");
    if(buttondelete!=null){
    String tid = request.getParameter("tid");

        try {
            clmmodel_database.updateQuery("delete from clm_team where teamid = '"+tid+"'");
            response.sendRedirect("clmview_teamlist.jsp");
        } catch (Exception e) {
        }

    }

但这会删除表的第一行,而不是我需要删除的行。请告诉我我在哪里犯了错误或建议我。

5 个答案:

答案 0 :(得分:1)

最简单的解决方案似乎是为每个元素创建一个表单:

<tr>
<td>
Item X
</td>
<td>
<form><input type="hidden" name="id" value="x"/><input type="submit"/></form>
</td>
</tr>

<tr>
<td>
Item Y
</td>
<td>
<form><input type="hidden" name="id" value="y"/><input type="submit"/></form>
</td>
</tr>

答案 1 :(得分:0)

@Dilukshan Mahendra你可以尝试这样,这对我有用。您需要做的就是输入您的表id和锚标记类(每行都有行的锚标记,因此使用类)

$("#table_name tr td anchor_class").click(function(e) {
// e.preventDefault();
var row = $(this).closest('tr');
var rowid = row.attr('id');
var url = $(this).attr('href');
var ajaxUrl = url.substring(url.lastIndexOf("/") + 1, url.length);
input_box = confirm("Are you sure you want to delete this Record?");
if (input_box == true) {
    // Output when OK is clicked
    // Here you are sending your servlet URL to ajax.
    $.ajax({
        url : ajaxUrl,
        type : "POST",
        async : false,
        success : function() {
            $('#'+rowid).remove();
            alert('Record Deleted');
        }
    });

    return false;
} else {
    // Output when Cancel is clicked
    // alert("Delete cancelled");
    return false;
}
});

我的html表格行如下,

<tr>
   <td>
     <input type="text">
   </td>
   <td>
     <textarea ></textarea>
   </td>
   <td>
     <input class="file1" type="file" value="">
   </td>
   <td>
      <a id="deleteFile2" class="del" href="ur_servlet_url&id=2">Delete</a>
   </td>
</tr>

希望这会有所帮助..

答案 2 :(得分:0)

问题是

1)表单上的delete按钮名称对所有行都是通用的。

String buttondelete = request.getParameter("delete"); //button name on form  

您如何知道点击了哪个删除按钮?没有标识符。

<强>解决方案
我没有提供完整的代码,但是给你指明方向。

不需要hidden field

您可以使用AJAX并编写一个获取id并传递给servlet的javascript函数

<input type="button" class="greenbutton" name="delete" value="Delete" id="<%rs1.getString("teamid");%>" onclick="deleteRow(this.id)"/>  

Javascript

function deleteRow(clickedId)
{
   //AJAX call here
  //pass this clickedId to Servlet and delete the row , show response back to user 
}

相关链接

答案 3 :(得分:0)

在渲染的HTML表格中,您将拥有多个具有相同id属性的隐藏字段:

<form>
    <table>
        <tr>
            <td> <input type="hidden" value="ID_1" id="tid" ... > </td>
            <td> ... </td>
        <tr>
        <tr>
            <td> <input type="hidden" value="ID_2" id="tid" ... > </td>
            <td> ... </td>
        <tr>
        ...
    </table>
</form>

这是有效的。发送表单时,tid字段的所有值将作为数组发送到服务器。喜欢:tid = [ "ID_1", "ID_2", ... ]

request.getParameter("tid")会返回第一个 value of this list。因此,总是会删除第一行。

一种可能的解决方案是删除隐藏的输入字段,并为每行中的提交按钮提供不同的值:

<td> <input type="submit" name="delete" value="<%out.print(rs1.getString("teamid"));%>"/> </td>

然后,浏览器会看到:

<form>
    <table>
        <tr>
            <td> ... </td>
            <td> <input type="submit" name="delete" value="ID_1"/> </td>
        <tr>
        <tr>
            <td> ... </td>
            <td> <input type="submit" name="delete" value="ID_2"/> </td>
        <tr>
        ...
    </table>
</form>

并且,在您的servlet中,使用:

String tid = request.getParameter("delete");

这将为您提供正确的身份证。

答案 4 :(得分:0)

使用此代码以表格形式显示List:

<tr>
    <td>
        <input type="submit" name="data" value=<%=rs.getString(5)%> />
    </td>
</tr>

这里“rs.getString(5)”是id。 id是字段名称/ 5是表中的列索引。

在SERVLET / JSP页面

String id = request.getParameter("data"); //Store clicked 'submit' value.

Out.println(id);//Use the variable for your SQL.

它对我有用。