我正在使用 Array 来存储请求的信息。在请求中的某个时刻,他们可以从中添加或删除信息。
删除按钮将索引传递到找到 ArrayDeleteAt() 逻辑的页面。
在页面中,它具有以下代码:
<cfif (isDefined('form.deleteIndex'))>
<cfset temp = arrayDeleteAt(session.Request,form.deleteIndex)>
</cfif>
删除第一项时,它不会从 Array 中删除 Struct,但会清除它的值。删除任何其他项目时都很好,但我无法从数组中删除空的。
创建数组:
<CFSET VarArrayLen = ArrayLen(session.ord)>
<CFSET VARDuplicatedItem = "False">
<cfloop index="i" from="1" to="#VarArrayLen#">
<CFIF session.ord[i].ITEMID eq ITEMID >
<CFSET VARDuplicatedItem = "TRUE">
</CFIF>
</CFLOOP>
<CFIF VARDUPLICATEItem eq "False">
<cfset temp = arrayAppend(session.ord,StructNew())>
<cfset session.ord[arraylen(session.ord)].ITEMID = ITEMID>
<cfset session.ord[arraylen(session.ord)].ITEMDETAILS = ITEMDETAILS>
<cfset session.ord[arraylen(session.ord)].FullRequestDetails = FullRequestDetails>
</CFIF>
允许用户从数组中添加或删除的一页:
<CFSET VarArrayLen = ArrayLen(session.ord)>
<table>
<cfloop index="i" from="1" to="#VarArrayLen#">
<CFIF ArrayIsDefined(session.ord,i) eq true>
<tr>
<cfform action="ActionPage.cfm" method="post">
<td>
<input type="hidden" value="#i#" name="del" />
<input type="image" src="/images/stop.gif" width="8" alt="delete this item" />
</td>
</cfform>
</tr>
</CFIF>
</CFLOOP>
</table>
在删除项目的页面上:
<cfif (isDefined('form.del'))>
<cfset temp = arrayDeleteAt(session.ord,form.del)>
</cfif>
这就是所有的代码。
在 Session 中,它仍然显示 Array 中所有值都为空的一项。
它始终是保留在数组中的第一个要删除的项目,其余的都可以正常删除。