使用复选框和附加值批量删除
Bulk delete with checkboxes and additional values
所以我想我现在处于某种隧道视野中。
我必须维护一个非常基本的应用程序 (HTML + ASP)。在此应用程序中,有一个小 table 具有一些值:
<table>
<tr>
<td>Customer-ID</td>
</tr>
<tr>
<td>Waregroup</td>
</tr>
<tr>
<td>Some other ID</td>
</tr>
<tr>
<td>[edit]</td>
</tr>
<tr>
<td>[delete]</td>
</tr>
<tr>
<td>[checkbox for deletion]</td>
</tr>
</table>
看起来像这样,使它更直观(排除了有数据的行,不需要它们):
现在,delete
-函数不仅仅接受客户 ID (KD Nr.),它还接受了更多的参数,这些参数在 link 中提供。例如,这里:
someSite.com?sid=123456&gkid=133&kdid=9043168&wws=9&del=1
一些值取自 QueryString,其他值取自 SQL-Query 的结果集。
现在我必须扩展此应用程序并添加一个复选框以进行批量删除。这根本不是问题,但现在我有点卡在如何获取删除所需的值,而我基本上只能在每个复选框中使用 1 个值。我考虑过使用隐藏输入,但后来我不知道如何确定应该删除哪些 "rows" 而哪些不应该删除:
这是我添加的:
<td>
<input type="checkbox" name="deletebox[]" value="0">
<input type="hidden" name="sid" value="<%=Request.QueryString("sid")%>">
<input type="hidden" name="gkid" value="<%=Request.QueryString("gkid")%>">
<input type="hidden" name="kdid" value="<%=rs("ka_kdnr")%>">
<input type="hidden" name="wws" value="<%=rs("ka_sysid")%>">
</td>
我的想法是遍历每个选中的复选框,从隐藏字段中获取值,然后 运行 我的删除脚本在一个循环中。
关于如何做到这一点的任何线索?我可以简单地遍历所有选中的复选框和 request
以获得隐藏字段的当前值吗?
我基本上只需要 gkid 和 gkkid 来让存储过程工作。
如果您提交的表单包含同一表单变量的多个实例,那么请求对象中该变量的值将显示为逗号分隔的数组。换句话说,如果您的表单包含以下内容:
<input type="checkbox" name="gkid" value="25">
<input type="checkbox" name="gkid" value="50">
<input type="checkbox" name="gkid" value="75">
然后Request("gkid")
如果你全部勾选,会显示一个值“25,50,75”。然后,您可以按如下方式拆分数组。
For i = 1 to Request("gkid").Count
Response.write Request("gkid")(i) & "<br>" & vbcrlf
Next
我假设您可以从那里获取它并调整上面的内容以使用 Request.Form("gkid")(i)
并使用调用您的存储过程的代码在循环内应用逻辑。
您的问题提到了一个名为 "gkkid" 的变量。我看不出那是从哪里来的。如果可以的话,我也许可以改进这个答案。
所以我想我现在处于某种隧道视野中。
我必须维护一个非常基本的应用程序 (HTML + ASP)。在此应用程序中,有一个小 table 具有一些值:
<table>
<tr>
<td>Customer-ID</td>
</tr>
<tr>
<td>Waregroup</td>
</tr>
<tr>
<td>Some other ID</td>
</tr>
<tr>
<td>[edit]</td>
</tr>
<tr>
<td>[delete]</td>
</tr>
<tr>
<td>[checkbox for deletion]</td>
</tr>
</table>
看起来像这样,使它更直观(排除了有数据的行,不需要它们):
现在,delete
-函数不仅仅接受客户 ID (KD Nr.),它还接受了更多的参数,这些参数在 link 中提供。例如,这里:
someSite.com?sid=123456&gkid=133&kdid=9043168&wws=9&del=1
一些值取自 QueryString,其他值取自 SQL-Query 的结果集。
现在我必须扩展此应用程序并添加一个复选框以进行批量删除。这根本不是问题,但现在我有点卡在如何获取删除所需的值,而我基本上只能在每个复选框中使用 1 个值。我考虑过使用隐藏输入,但后来我不知道如何确定应该删除哪些 "rows" 而哪些不应该删除:
这是我添加的:
<td>
<input type="checkbox" name="deletebox[]" value="0">
<input type="hidden" name="sid" value="<%=Request.QueryString("sid")%>">
<input type="hidden" name="gkid" value="<%=Request.QueryString("gkid")%>">
<input type="hidden" name="kdid" value="<%=rs("ka_kdnr")%>">
<input type="hidden" name="wws" value="<%=rs("ka_sysid")%>">
</td>
我的想法是遍历每个选中的复选框,从隐藏字段中获取值,然后 运行 我的删除脚本在一个循环中。
关于如何做到这一点的任何线索?我可以简单地遍历所有选中的复选框和 request
以获得隐藏字段的当前值吗?
我基本上只需要 gkid 和 gkkid 来让存储过程工作。
如果您提交的表单包含同一表单变量的多个实例,那么请求对象中该变量的值将显示为逗号分隔的数组。换句话说,如果您的表单包含以下内容:
<input type="checkbox" name="gkid" value="25">
<input type="checkbox" name="gkid" value="50">
<input type="checkbox" name="gkid" value="75">
然后Request("gkid")
如果你全部勾选,会显示一个值“25,50,75”。然后,您可以按如下方式拆分数组。
For i = 1 to Request("gkid").Count
Response.write Request("gkid")(i) & "<br>" & vbcrlf
Next
我假设您可以从那里获取它并调整上面的内容以使用 Request.Form("gkid")(i)
并使用调用您的存储过程的代码在循环内应用逻辑。
您的问题提到了一个名为 "gkkid" 的变量。我看不出那是从哪里来的。如果可以的话,我也许可以改进这个答案。