手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

用ASP实现Web表单的数据保持(二)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
一个更加动态的方法
  更有一个等待解决的问题是我们不知道每个特定的页面有多少需要存储的值。我们真的想要有一种一般的方法能够反复地使用,而不用总是为获取正确的数组维数而担心。最容易的方法就是使用动态数组。在VBScript中,我们能够用ReDim 关键字创建一个动态数组,以后再用相同的关键字调整他的大小。假如我们在调整大小时包含了Preserve 关键字,我们就能够保持存储的值。有一个限制就是只能在最后一维调整多维数组的大小。


  我们例子中的页面(名为aspstate.asp )就使用了这个技术。首先声明一个能容纳255个控制名字和值的数组。注意第二列(最后一列)指数是和我们所发现的控制数不同的一个。我们还将计数器变量intIndex(当我们发现控制域时计算其个数)配置为0。

  'create a dynamic two-dimensional array

  ReDim arrVals(1, 255)

  intIndex = 0

  现在我们在Request.Form集合中循环以填充数组。

'loop through the Request.Form collection

For Each varItem in Request.Form

If Request.Form(varItem).count > 1 Then

  'this is itself a collection so iterate each value

  For intLoop = 1 to Request.Form(varItem).count

   'store control name and value in array

   arrVals(0, intIndex) = varItem & "(" & intLoop & ")"

   arrVals(1, intIndex) = Request.Form(varItem)(intLoop)

   intIndex = intIndex 1

  Next

Else

  'this is a single control item so just store in array

  arrVals(0, intIndex) = varItem

  arrVals(1, intIndex) = Request.Form(varItem)

  intIndex = intIndex 1

End If

Next

  现在我们的数组中已有了全部控制域名和他们的值,intIndex 包含着Request.Form 集合中所表现的控制域个数的记数值。我们能够调整数列的大小,这样一来他就只包含元素的记数值。由于数列从第0列开始,我们就用intIndex - 1 作为新的列数。

  'resize the array to the correct size

  ReDim Preserve arrVals(1, intIndex - 1)

  现在该考虑一下我们如何将数组放入Session 对象中。我们从Request.ServerVariables 集合中收集引用页面(装载这个页面的表单页面)的名字,去掉路径。然后在Session 对象中把他用做变量名:

  'get the name for the session variable using the script

  'name of the form page which was the referrer

  strReferrer = Request.ServerVariables("HTTP_REFERER")

  strReferrer = Mid(strReferrer, InstrRev(strReferrer, "/") 1)

  'save the array in the Session

  Session(strReferrer) = arrVals

  结束时,我们只要在页面中显示存储在数组中的值来证实我们所做的工作:

Response.Write "< P >---- values received and stored ----< BR >"

'display the array contents

For intIndex = 0 To UBound(arrVals, 2)

Response.Write arrVals(0, intIndex) & " = " _

       & arrVals(1, intIndex) & "< BR >"

Next

  这里是用我们以前使用过的相同的值所得到的结果:


  10700_9364_000927i1-2.gif




文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS