关于批量更新(多选框选中的数据)

ncase 2015-12-14 11:00:21

正常情况下批量更新:

d_id = Trim(Request.Form("d_id"))
d_bj = Trim(Request.Form("d_bj"))

d_id = Split(d_id,",")
d_bj = Split(d_bj,",")

For i = 0 To UBound(d_id)

Set rs = Server.CreateObject("adodb.recordset")
rs.open "select * FROM d_mat where d_id =" & d_id(i) ,conn,1,3

If Not rs.EOF Then
rs("d_bj") = 0
rs.Update
End If

Next



如果我在更新的表单中,每行加一个复选框
<input type="checkbox" name="d_gx" id="d_test">

现在需求:只更新选中复选框的行。

请问应该怎么修改。
...全文
320 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 ncase 的回复:
[quote=引用 2 楼 chinmo 的回复:] 复选框的是,你选择他就有值,你不选择他没值的,素以你判断一下就可以了

chinmo:
           谢谢您的回复,现在的问题如下:
 
一个10行的表格,每行2列数据,一个d_id,一个d_bj(手动填写的input)
 
<form action="" method="get">
<table width="200" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="a" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="b" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="c" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="d" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="e" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="f" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="g" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="h" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="i" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="j" /></td>
  </tr>
</table>
</form>
1、全部批量更新: 那么传递过来的值就是 d_id =1,2,3,4,5,6,7,8,9,10 d_bj=a,b,c,d,e,f,g,h,i,j 更新的时候,直接对应ID,把d_bj批量更新,这样没问题。 2、按复选框更新: 把表格中input换成复选框来传递d_id的值,我选择其中3行的复选框,但10行中每行还是有一个d_bj的input,所以现在传递过来的值是这样的: d_id =1,3,9 d_bj=a,b,c,d,e,f,g,h,i,j d_id是按复选框传递的,d_bj还是全部传递过来,那么问题来了 做更新的时候,d_id和d_bj的值就对应不上了 怎么样才能让传递过来的字符串一一对应,变成如下格式: d_id =1,3,9 d_bj=a,c,i[/quote] 很简单的,就是改变d_bj 的表单name值
<form action="" method="get">
<table width="200" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj<%=rs("d_id")%>" type="text" value="a" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj<%=rs("d_id")%>" type="text" value="b" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj<%=rs("d_id")%>" type="text" value="c" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj<%=rs("d_id")%>" type="text" value="d" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj<%=rs("d_id")%>" type="text" value="e" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj<%=rs("d_id")%>" type="text" value="f" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj<%=rs("d_id")%>" type="text" value="g" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj<%=rs("d_id")%>" type="text" value="h" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj<%=rs("d_id")%>" type="text" value="i" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj<%=rs("d_id")%>" type="text" value="j" /></td>
  </tr>
</table>
</form>
这样你循环d_id ,就可以分别通过 d_bj=Request.Form('d_bj' &d_id(i) )得到
Go 旅城通票 2015-12-15
  • 打赏
  • 举报
回复
不勾选的check波箱就把对应的tr删除,这样就配对了
<script>
    function delNotChecked(f) {
        var id = document.getElementsByName('d_id');
        for (var i = id.length - 1; i >= 0; i--) if (!id[i].checked) id[i].parentNode.parentNode.parentNode.removeChild(id[i].parentNode.parentNode);

    }
</script>
<form action="" method="get" onsubmit=" delNotChecked(this)">
    <table width="200" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <td><input name="d_id" type="checkbox"/></td>
            <td><input name="d_bj" type="text" value="a" /></td>
        </tr>
        <tr>
            <td><input name="d_id" type="checkbox" /></td>
            <td><input name="d_bj" type="text" value="b" /></td>
        </tr>
        <tr>
            <td><input name="d_id" type="checkbox" /></td>
            <td><input name="d_bj" type="text" value="c" /></td>
        </tr>
        <tr>
            <td><input name="d_id" type="checkbox" /></td>
            <td><input name="d_bj" type="text" value="d" /></td>
        </tr>
        <tr>
            <td><input name="d_id" type="checkbox" /></td>
            <td><input name="d_bj" type="text" value="e" /></td>
        </tr>
        <tr>
            <td><input name="d_id" type="checkbox" /></td>
            <td><input name="d_bj" type="text" value="f" /></td>
        </tr>
        <tr>
            <td><input name="d_id" type="checkbox" /></td>
            <td><input name="d_bj" type="text" value="g" /></td>
        </tr>
        <tr>
            <td><input name="d_id" type="checkbox" /></td>
            <td><input name="d_bj" type="text" value="h" /></td>
        </tr>
        <tr>
            <td><input name="d_id" type="checkbox" /></td>
            <td><input name="d_bj" type="text" value="i" /></td>
        </tr>
        <tr>
            <td><input name="d_id" type="checkbox" /></td>
            <td><input name="d_bj" type="text" value="j" /></td>
        </tr>
    </table>
    <input type="submit" />
</form>
  • 打赏
  • 举报
回复
引用 楼主 ncase 的回复:

正常情况下批量更新:

d_id = Trim(Request.Form("d_id"))
d_bj = Trim(Request.Form("d_bj"))

d_id = Split(d_id,",")
d_bj = Split(d_bj,",")

For i = 0 To  UBound(d_id)

    Set rs = Server.CreateObject("adodb.recordset")
    rs.open "select * FROM d_mat where d_id =" & d_id(i) ,conn,1,3

    If Not rs.EOF Then
        rs("d_bj") = 0
        rs.Update
    End If

Next

如果我在更新的表单中,每行加一个复选框 <input type="checkbox" name="d_gx" id="d_test"> 现在需求:只更新选中复选框的行。 请问应该怎么修改。
复选框的是,你选择他就有值,你不选择他没值的,素以你判断一下就可以了
Dogfish 2015-12-15
  • 打赏
  • 举报
回复
一样的。 复选框是,你不选,变量不存在。选的时候,所有的选项以逗号分开的。
ncase 2015-12-15
  • 打赏
  • 举报
回复
引用 5 楼 hookee 的回复:
简单点,在客户端用js判断处理,把结果保存到hidden字段。 asp里取hidden字段就行了 另外。 批量更新 最好用rs.UpdateBatch 效率比较高
hookee,谢谢您的回复。 不明白在客户端用JS怎么处理,如果可以,麻烦写一段代码看看。 我现在想要的结果就是: 正常情况下全部传递过来的字符串: d_id =1,2,3,4,5,6,7,8,9,10 d_bj=a,b,c,d,e,f,g,h,i,j 我想用复选框来传递,获取如下字符串。 d_id =1,3,9 d_bj=a,c,i
hookee 2015-12-15
  • 打赏
  • 举报
回复
简单点,在客户端用js判断处理,把结果保存到hidden字段。 asp里取hidden字段就行了 另外。 批量更新 最好用rs.UpdateBatch 效率比较高
ncase 2015-12-15
  • 打赏
  • 举报
回复
引用 2 楼 chinmo 的回复:
复选框的是,你选择他就有值,你不选择他没值的,素以你判断一下就可以了

chinmo:
           谢谢您的回复,现在的问题如下:
 
一个10行的表格,每行2列数据,一个d_id,一个d_bj(手动填写的input)
 
<form action="" method="get">
<table width="200" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="a" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="b" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="c" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="d" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="e" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="f" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="g" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="h" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="i" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="j" /></td>
  </tr>
</table>
</form>
1、全部批量更新: 那么传递过来的值就是 d_id =1,2,3,4,5,6,7,8,9,10 d_bj=a,b,c,d,e,f,g,h,i,j 更新的时候,直接对应ID,把d_bj批量更新,这样没问题。 2、按复选框更新: 把表格中input换成复选框来传递d_id的值,我选择其中3行的复选框,但10行中每行还是有一个d_bj的input,所以现在传递过来的值是这样的: d_id =1,3,9 d_bj=a,b,c,d,e,f,g,h,i,j d_id是按复选框传递的,d_bj还是全部传递过来,那么问题来了 做更新的时候,d_id和d_bj的值就对应不上了 怎么样才能让传递过来的字符串一一对应,变成如下格式: d_id =1,3,9 d_bj=a,c,i
ncase 2015-12-15
  • 打赏
  • 举报
回复
引用 1 楼 dogfish 的回复:
一样的。 复选框是,你不选,变量不存在。选的时候,所有的选项以逗号分开的。

dogfish:
           谢谢您的回复,现在的问题如下:

一个10行的表格,每行2列数据,一个d_id,一个d_bj(手动填写的input)

<form action="" method="get">
<table width="200" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="a" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="b" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="c" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="d" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="e" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="f" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="g" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="h" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="i" /></td>
  </tr>
  <tr>
    <td><input name="d_id" type="text" value="<%=rs("d_id")%>" /></td>
    <td><input name="d_bj" type="text" value="j" /></td>
  </tr>
</table>
</form>

1、全部批量更新: 那么传递过来的值就是 d_id =1,2,3,4,5,6,7,8,9,10 d_bj=a,b,c,d,e,f,g,h,i,j 更新的时候,直接对应ID,把d_bj批量更新,这样没问题。 2、按复选框更新: 把表格中input换成复选框来传递d_id的值,我选择其中3行的复选框,但10行中每行还是有一个d_bj的input,所以现在传递过来的值是这样的: d_id =1,3,9 d_bj=a,b,c,d,e,f,g,h,i,j d_id是按复选框传递的,d_bj还是全部传递过来,那么问题来了 做更新的时候,d_id和d_bj的值就对应不上了 怎么样才能让传递过来的字符串一一对应,变成如下格式: d_id =1,3,9 d_bj=a,c,i

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧