中华网通行证
用户名 密码
  科技动态 硬件广场 下载基地 网络教室 网络冲浪 科学博览 移动时代 手机上网 桌面壁纸 科技商情  

用ASP实现Web表单的数据保持(二)
青苹果工作室编译 2000-10-31 10:29:00

一个更加动态的方法
  还有一个等待解决的问题是我们不知道每个特定的页面有多少需要存储的值。我们真的想要有一种一般的方法可以反复地使用,而不用总是为获取正确的数组维数而担心。最容易的方法就是使用动态数组。在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

赛迪网
相关报道
用ASP实现Web表单的数据保持(三) (2000-10-31 10:25:53)




本站检索



中华网推荐

·国家级治脑病新药思维源
·中藏药治疗脑病新突破
·治类风湿,强直性脊柱炎
·养肾·痛风·长寿
·肝病泌尿脑萎缩新药介绍
·强直性脊柱炎康复乐园
·让中医辩证不孕不育
·国医治股骨头坏死一绝
·乙肝为何久治不愈?
·二千元垄断批发做老板
·中医中药专治前列腺
·治牛皮癣白癜风已成现实
·专治痛风病的白衣天使
·不孕不育的杏林奇葩
·专卖店零售管理系统





   

网络教室编辑信箱