我向用户显示了一个大型记录集。每个记录都有一个编辑按钮,允许用户编辑记录中的各种数据。某些记录比其他记录具有更多字段,因此编辑表单具有各种不同的名称和字段数。
例如,如果单击编辑按钮,则会生成以下一条记录:
<form id="frm1" name="frm1" method="post" action="changeJob.asp?jobNo=1101&jQueryID=1" target="_blank">
<input type='text' name='Qty13' value='8' size="3" maxlength="3"/>
<input type="submit" name="btnFrm1" id="button" value="Submit" />
</form>
然而,另一条记录会产生这个:
<form id="frm2" name="frm2" method="post" action="changeJob.asp?jobNo=1102&jQueryID=2" target="_blank">
<input type='text' name='Qty15' value='8' size="3" maxlength="3"/>
<input type='text' name='Qty16' value='8' size="3" maxlength="3"/>
<input type='text' name='Qty17' value='8' size="3" maxlength="3"/>
<input type='text' name='Qty18' value='8' size="3" maxlength="3"/>
<input type="submit" name="btnFrm2" id="button" value="Submit" />
</form>
如上所述,每个输入字段被分配其唯一名称,例如“Qty14”,并且其形式具有其自己的名称,例如“frm2”。这些必须是唯一的,因为我有一些jQuery加号和减号按钮,允许用户增加数量。
在changeJob.asp中,如何确定哪些字段在具有唯一名称和编号的位置提交?我可以很容易地使用隐藏字段获取表单名称。
我正在努力实现以下目标:
对于frm1中的每个字段 **做SQL Update ** Next
任何指导都会非常感激:)
答案 0 :(得分:2)
只需迭代所有表单集合,然后查找以所需名称开头的键:
Dim strSQL, curValue, blnFirst
blnFirst = True
strSQL = "Update MyTable Set "
For Each key In Request.Form
If Left(key, 3)="Qty" Then
'prevent nasty hacking
If IsNumeric(Replace(key, "Qty", "")) Then
curValue = Request.Form(key)
If IsNumeric(curValue) Then
If Not(blnFirst) Then
strSQL = strSQL & ", "
End If
strSQL = strSQL & key & "=" & curValue
blnFirst = False
End If
End If
End If
Next
If blnFirst Then
'no values, show alert of some sort...
Else
strSQL = strSQL & " Where [filter here]"
'...
End If
这将根据提交的值构建动态查询。
如果每个值都需要单独更新,则代码变得更简单,希望您可以自行更改。 :)
答案 1 :(得分:0)
我很乐意帮忙。需要更多信息,因为我不想告诉你你已经知道的东西。你能告诉我你是否已经填写了表格代码......如...这个表格是用来编辑新的和/或旧的数据还是只有新的记录?
另外,您是否考虑过使用一个表单然后让服务器端代码(ASP)动态生成输入框?这是我的建议,因为在这种情况下有多个表格(除非我遗漏了什么)是......不优雅。
您可以下载此zip文件,其中包含两个asp页面,演示了更具动态性的方法:http://www.oceanmedia.net/files/hk_config.zip