ColdFusion数组,保留值

ColdFusion数组,保留值,coldfusion,coldfusion-9,retain,dynamic-arrays,Coldfusion,Coldfusion 9,Retain,Dynamic Arrays,我有一个表格和一个“添加项目”按钮。单击“添加项目”,将打开第二个表单,用户可以在其中添加详细信息。单击第2页上的“提交”后,详细信息应作为新行添加到第一个屏幕的表格中。 我正在使用数组和结构在数组中添加/追加 每次用户尝试添加新行时,我都在现有数组(第1页)中创建一个新结构,并尝试在第一页显示该数组 <cfset arrayRequisition[k] = StructNew() /> <cfset arrayRequisition[k].Part_Nbr = #V

我有一个表格和一个“添加项目”按钮。单击“添加项目”,将打开第二个表单,用户可以在其中添加详细信息。单击第2页上的“提交”后,详细信息应作为新行添加到第一个屏幕的表格中。 我正在使用数组和结构在数组中添加/追加

每次用户尝试添加新行时,我都在现有数组(第1页)中创建一个新结构,并尝试在第一页显示该数组

<cfset arrayRequisition[k] = StructNew() />     
<cfset arrayRequisition[k].Part_Nbr = #Variables.ReqDescription# />     
<cfset arrayRequisition[k].Description = #Variables.EQT_DESCRIPTION# />     
<cfset arrayRequisition[k].Quantity = #Variables.RQT_QUANTITY# />   
<cfset arrayRequisition[k].Status = "pending" />    
<cfset arrayRequisition[k].Line_No = #i# /> 

据我所知,在两个页面之间的转换过程中,我以前的结构数据/数组数据丢失。在这种情况下,如何保留数组的值?

听起来您有两个不同的ColdFusion模板(.cfm文件)。如果是这种情况,那么您需要了解,您在ColdFusion模板中使用的变量仅在浏览器请求期间可用。一旦ColdFusion模板运行并将响应发送回用户,这些变量就会“丢失”。下面是一个页面,概述了ColdFusion应用程序的生命周期:

为了保留后续请求的值,您可以(这不是一个包含所有内容的列表):

  • 在每次表单提交时传递所有值
  • 将变量存储在持久作用域中,如
    会话
  • 使用数据库存储值
然后,根据您选择的选项,需要更改ColdFusion模板以将值存储在持久位置(第二个模板)中,并从持久位置(第一个模板)读取现有值


还可以重写整个过程,以使用来自单个ColdFusion模板的AJAX调用。其中AJAX函数将调用一个新的ColdFusion CFC,需要编写该CFC来控制变量值的更新和检索。但是,我相信这个选项对您来说是一个更广泛的重写。

检查以确保
arrayRequisition
确实是一个数组。通过使用第一个示例中显示的语法,CF将创建一个结构,而不是数组。执行
varName[x]=someVar
实际上将为您提供一个带有变量值键的结构
x

要创建数组,您需要创建一个包含键
Part\u nbr
Description
等的结构,然后调用
arrayaappend(arrayRequisition,newStruct)

<cfoutput>
 <table border="1">
  <tr>
    <td style="font-weight:bold;">Part_Nbr&nbsp;&nbsp;</td>
    <td style="font-weight:bold;">Description&nbsp;&nbsp;</td>
    <td style="font-weight:bold;">Quantity&nbsp;&nbsp;</td>
    <td style="font-weight:bold;">Status&nbsp;&nbsp;</td>
    <td style="font-weight:bold;">Line_No</td>
  </tr> 
  <cfdump var="#i#">
  <cfloop from="1" to="#arrayLen(arrayRequisition)#" index="j">
  <cfdump var="#arrayLen(arrayRequisition)#">
  <tr>
   <td>#arrayRequisition[j].Part_Nbr#</td>
   <td>#arrayRequisition[j].Description#</td>
   <td>#arrayRequisition[j].Quantity#</td>
   <td>#arrayRequisition[j].Status#</td>
   <td style="text-align:right;">#arrayRequisition[j].Line_No#</td>
 </tr>
 </cfloop>
 </table>
 </cfoutput>