ColdFusion数组,保留值
我有一个表格和一个“添加项目”按钮。单击“添加项目”,将打开第二个表单,用户可以在其中添加详细信息。单击第2页上的“提交”后,详细信息应作为新行添加到第一个屏幕的表格中。 我正在使用数组和结构在数组中添加/追加 每次用户尝试添加新行时,我都在现有数组(第1页)中创建一个新结构,并尝试在第一页显示该数组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
<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模板的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 </td>
<td style="font-weight:bold;">Description </td>
<td style="font-weight:bold;">Quantity </td>
<td style="font-weight:bold;">Status </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>