| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 791 人关注过本帖
标题:ASP中的一个表格返回值的问题
只看楼主 加入收藏
shcnlm
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2010-5-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
ASP中的一个表格返回值的问题
我遇到了一个问题,就是A网页中将数据库中记录数的ID作为不同表单name的名称.在B网页中获取A网页中表单的值的时候,却出现了疑问,请大家帮忙分析下.

A网页中的部分代码:
程序代码:
....
rs.open sql,conn,1,1
if not rs.EOF or rs.BOF then
%>
<tr bgcolor=LawnGreen><td WIDTH=45%>产品型号</td><td WIDTH=25%>产品名称</td><td WIDTH=20%>价格</td><td WIDTH=15%>数量</td></tr>
<%
do while not rs.EOF or rs.BOF
%>
    <tr bgcolor=LightGoldenrodYellow><td><%=rs("name")%></td>
    <td><%=rs("publish")%></td>
    <td><%=rs("price")%></td>
    <td><INPUT type="text" name=<%=rs("id")%>></td>
<%     rs.movenext
    loop
end if
....
A网页的主要功能是,客户端填写所需求的产品数量.

B网页中的部分代码:
程序代码:
....
rs.open sql,conn,1,1
curid=0
if not rs.EOF or rs.BOF then
%>
<tr bgcolor=LawnGreen><td WIDTH=45%>手机型号</td><td WIDTH=25%>生产厂家</td><td WIDTH=15%>价格</td><td WIDTH=15%>数量</td></tr>
<%
do while not rs.eof
curid=curid+1
if isnumeric(request(curid))<>0 then
%>
    <tr bgcolor=LightGoldenrodYellow><td><%=rs("name")%></td>
    <td><%=rs("publish")%></td>
    <td><%=rs("price")%></td>
    <td><%if request(curid)<>"" then
    Response.Write request(curid)
    else
    Response.write "0"
    end if    %></td></tr>
<%    
    end if
    rs.movenext
    loop
....

B网页是接收A网页中的数量部分来显示,并确认.

我现在疑问的是curid=curid+1  是怎样让 request(curid)达到获取A网页中输入的数量的.

我是新手,学习没多久,所以还请详细讲解.谢谢!


[ 本帖最后由 shcnlm 于 2010-5-12 21:58 编辑 ]
搜索更多相关主题的帖子: ASP 表格 返回值 
2010-05-12 21:57
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册:2010-3-16
收藏
得分:0 
request(curid)参数有问题吧,是不是应该用字符类型。
2010-05-12 23:54
sunnyxg
Rank: 2
来 自:HUNAN
等 级:论坛游民
帖 子:7
专家分:15
注 册:2010-5-13
收藏
得分:0 
LZ:你在A网页中的 <INPUT type="text" name=<%=rs("id")%>> 这句, name=<%=rs("id")%>  它的实际值是什么呢,你不是说想客户在A页面自己填写数量吗,如果你想从数据库中读取出来应该是这样写吧: <INPUT type="text" name="curid" value=<%=rs("id")%>>。 然后你在B页面直接 Request 。还有你在A页面是循环读取数据,在B页面接收的时候要注意。
    不知能否帮助你!我们共同学习。

随风逐流,我心依旧!
2010-05-13 09:00
shcnlm
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2010-5-12
收藏
得分:0 
感谢楼上二位的回答.
我再详细说明下.
1/ 以上代码是没有问题的,运行的也很正常,是从网上下载的实例.
2/ A网页中的<input type="text" name=<%=rs("id")>>这句呢,因为是循环输出,所以每条记录的输出会对应相应的表单.为了表单名称即与相应的记录相关联,又要不重复,所以就用数据记录中的ID来做为此表格的名称.
三楼的朋友可能还未完全理解我的意思.如果用写成<input type="text" name="curid" value=<%=rs("id")>>.则循环输出的表单就会是同一名称,而无法区别每条记录返回的值.  value就会有个默认值在输入栏内,会造成输入的麻烦.

这二段代码的意思是当A网页中循环输出数据库中所有的记录,并在每条记录的后面加上一个表单,当在客户端输入信息到表单里,并提交.B网页就负责接收A网页里表单的数据,并进行整理输出.
我不明白的是,A网页中没有curid这个变量,而B网页中可以用curid+1,然后再用request(curid)来获取A网页表单传送过来的数据.
我想不明白的是 数字1 是否也应该理解成变量呢?
2010-05-13 18:12
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:20 
td><INPUT type="text" name=<%=rs("id")%>></td>
看了B页面获取传参的代码,推断rs("id")为数字型的整型编号(0,1,2,3,4,5的那种编号)
因此A页面循环会生成
<td><INPUT type="text" name=1 ></td>
<td><INPUT type="text" name=2 ></td>
<td><INPUT type="text" name=3 ></td>
....
这样的文本框

B页面curid只是一个临时变量
比如要获取文本框1
Reqest("1")
而临时变量就写为
Reqest(curid)

2010-05-13 18:55
shcnlm
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2010-5-12
收藏
得分:0 
回复 5楼 yms123
谢谢! rs("id") 的确是按照0,1,2,3,4,5的这种类型的.听你这么一讲,也明白了一点.
如果rs("id")返回的不的顺序不规则,如0,4,5,7,9 这样又该如何获取呢?
用同样的方法,可能会造成数据显示的不完整.
2010-05-13 20:21
hams
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:18
帖 子:912
专家分:3670
注 册:2008-7-30
收藏
得分:0 
....
rs.open sql,conn,1,1
if not rs.EOF or rs.BOF then
%>
<tr bgcolor=LawnGreen><td WIDTH=45%>手机型号</td><td WIDTH=25%>生产厂家</td><td WIDTH=15%>价格</td><td WIDTH=15%>数量</td></tr>
<%
do while not rs.eof
curid=rs("ID")
if isnumeric(request.form(curid))<>0 then
%>
    <tr bgcolor=LightGoldenrodYellow><td><%=rs("name")%></td>
    <td><%=rs("publish")%></td>
    <td><%=rs("price")%>元</td>
    <td><%if request.form(curid)<>"" then
    Response.Write request(curid)
    else
    Response.write "0"
    end if    %>件
    </td></tr>
<%   
    end if
    rs.movenext
    loop
....

俺不高手,俺也是来学习的。
俺的意见不一定就对,当你不认同时请点忽视按钮。
当走到十字路口不知该如何走时,可在论坛问下路,但你若希望别人能一路把你送到目的地,显然是不现实的,因为别人也有自己要走的路。
2010-05-14 08:50
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
以下是引用shcnlm在2010-5-13 20:21:52的发言:

谢谢! rs("id") 的确是按照0,1,2,3,4,5的这种类型的.听你这么一讲,也明白了一点.
如果rs("id")返回的不的顺序不规则,如0,4,5,7,9 这样又该如何获取呢?
用同样的方法,可能会造成数据显示的不完整.
那段代码的循环问题,不必这样循环考虑下面的获取方法
CycleAdd1.asp
<html>
<head>
  <title>循环获取文本框累加-提交页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="javascript">
//判断是否是整数
function IsInt(val)
{
   try
   {
      var temp=parseInt(val);
      return true;
   }
   catch(e)
   {
      return false;
   }
}

//表单提交方法
function form1_Submit()
{
   //循环判断文本框输入的是不是整数
   for(var i=0;i<document.form1.AddText.length;i++)
   {
       if(IsInt(document.form1.AddText[i].value)==false)
       {
          alert('第'+i+'个文本框输入的不是整数');
          document.form1.AddText[i].focus();
          return false;
       }
   }
   document.form1.submit();//提交表单
}
</script>
</head>
<body>
<form name="form1" action="CycleAdd2.asp" method="post">
<%
   '循环产生文本框
   Dim i,TextNum
   TextNum=100'文本框的数量
   For i=0 To TextNum
       With Response
          .Write "<input type=text name=AddText Value="&i&"/><br/>"
          .Write "这是第"&i&"个文本框,请输入数字<br/>"
       End With
   Next
%>
<input type="button" onClick="form1_Submit();" name="submit" value="提交">
</form>
</body>
</html>

CycleAdd2.asp
<html>
<head>
  <title>循环获取文本框累加-显示结果页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
显示累加结果:<br/>
<%
   '判断是否是整数
   Function IsInteger(Val)
      On Error Resume Next
      IF VarType(CInt(Val))<>2 Then
         IsInteger=False
      Else
         IsInteger=True
      End IF
   End Function
   Dim i,TotalNum
   TotalNum=0'累加变量赋值为0
   For i=0 To Request.Form("AddText").Count
       Dim Temp'循环临时变量
       Temp=Request.Form("AddText")(i)
       IF IsInteger(Temp)=False Then
          Response.Write "<font color=red >第"&i&"个文本框不是整数</font><br/>"
       Else
          TotalNum=TotalNum+CInt(Temp)'累加输入结果
          Response.Write "第"&i&"个文本框的数据为:"&Temp&"<br/>"
       End IF
   Next
   Response.Write "最终累加的结果为:"&TotalNum
%>
</body>
</html>
在ASP里同名的表单控件可以使用CycleAdd2的红字的方法直接获得,
此代码同样可以用在如Request("AddText").Count ,Request("AddText")(i)
或者Request.QueryString("AddText").Count,Request.QueryString("AddText")(i)

2010-05-14 15:27
快速回复:ASP中的一个表格返回值的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016674 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved