2011-08-17 12 views
1

事前におかげでよろしく!Coldfusion - 動的フォームフィールドの更新

私のアプリケーションでは、動的質問を作成できます。動的質問には、質問に関連する動的回答がn個あります。

ユーザーがこれらを作成できるページは完全であり、これらの作品を完全に作成します。

私は最も効率的な方法で更新機能を構築しようとしています。通常は更新中に、フィールド/リレーションシップを削除して再構築します。これは、このアプリケーションではオプションではありません。回答が入力されると、レポート目的で保存する必要があるためです。

更新中、私は古い回答を全く更新しないうちに、新しい回答を認識して挿入する必要があります。

ありがとうございました!

答えて

1

このようなことを起こすには、私は一般にIDを含む更新しようとしている各フィールドの隣に隠しフィールドを持っています。フィールドの一致するIDが "0"の場合、それは新しいアイテムであることと、すでに存在していて更新が必要なアイテムであることがわかります。したがって、あなたのフォーム構造をループするときに、ゼロ以外のIDで更新を実行し、残りの部分に挿入します。

0

私はDanと同様のアプローチを採用しましたが、フィールド名自体にIDを含めました。たとえば、3つの回答フィールドがあり、そのうちの1つが新しい場合、名前は「Answer210」、「Answer211」、および「Answer0」となります。

私はフォームを処理するときに、各フィールドをループして、テキストの後の数字を取得します - '回答' - それに応じてデータを処理します。あなたがやることは次のようなものです。

<cfoutput> 
<cfif isDefined("form.FIELDNAMES")> 

    <cfloop index="x" list = "#form.fieldnames#"> 
     <cfif findNoCase('answer',x) NEQ 0> 
      <cfset varInteger = replaceNoCase(x,'Answer','')> 
      <cfif varInteger EQ 0> 
       Insert Answer text: #form[x]# with ID of #varInteger#<br /> 
      <cfelse> 
       Update Answer text: #form[x]# with ID of #varInteger#<br /> 
      </cfif>  
     </cfif> 
    </cfloop> 

</cfif> 
</cfoutput> 

処理はいくつでも処理できます...これは概念の証明です。

関連する問題