0

テーブルと「アイテムを追加」ボタンのあるフォームが 1 つあります。[アイテムを追加] をクリックすると、ユーザーが詳細を追加できる 2 番目のフォームが開きます。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# /> 

Kこれは、毎回追加およびインクリメントされる行の数です。ただし、そうしているときにエラーが発生します。

「配列フィールド 1 が見つかりません」。

それを修正すると、テーブルには最後の行のみが表示されます。

<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> 

私が理解していることから、2 つのページ間の遷移中に、以前の構造体データ/配列データが失われます。この場合、どうすれば配列の値を保持できますか?

4

2 に答える 2

0

arrayRequisitionが実際に配列であることを確認してください。最初の例で示した構文を使用すると、CF は配列ではなく構造体を作成します。実際varName[x] = someVarに実行すると、変数の値のキーを持つ構造が得られますx

Part_nbr配列を作成するには、キー、などを含む構造体を作成してDescriptionから呼び出す必要がありますarrayAppend( arrayRequisition, newStruct)

于 2013-06-04T15:01:27.710 に答える