リクエストの情報を保存するために配列を使用しています。要求のある時点で、情報を追加または削除できます。
削除ボタンは、ArrayDeleteAt() のロジックが見つかったページにインデックスを渡します。
ページには、次のコードがあります。
<cfif (isDefined('form.deleteIndex'))>
<cfset temp = arrayDeleteAt(session.Request,form.deleteIndex)>
</cfif>
最初の項目を削除すると、構造体は配列から削除されませんが、その値はクリアされます。他のアイテムを削除しても問題ありませんが、配列から空のストライクを取得できません。
配列を作成:
<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>
ユーザーが配列から追加または削除できる 1 つのページ:
<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>
それがすべてのコードです。
セッションでは、すべての値が空の配列内の 1 つの項目が引き続き表示されます。
配列に残るのは常に最初に削除されるアイテムであり、残りは正常に削除されます。