Coldfusion - обновление полей динамической формы - PullRequest
1 голос
/ 17 августа 2011

Заранее спасибо за помощь!

Мое приложение позволяет пользователям создавать динамические вопросы, которые имеют n динамических ответов, связанных с вопросом.

Страница, позволяющая пользователю создать их, завершена, и создание этих работ прекрасно.

Я застрял на наиболее эффективном способе построения возможности обновления. Обычно во время обновления я просто удаляю поля / отношения и перестраиваю их. Это не вариант в этом приложении, так как после ввода ответа мне нужно сохранить его для отчетности.

Итак, во время обновления мне нужно распознать, какие ответы являются новыми, и вставить их - при этом вообще не обновляя старые ответы.

Нужна помощь, чтобы обдумать это, спасибо, ребята!

Ответы [ 2 ]

1 голос
/ 17 августа 2011

Чтобы это произошло, у меня обычно есть скрытое поле рядом с каждым полем, которое я собираюсь обновить, которое содержит его идентификатор. Если соответствующий идентификатор для поля равен «0», то я знаю, что это новый элемент по сравнению с элементом, который уже существует и нуждается в обновлении. Поэтому, когда вы просматриваете структуру FORM, запускаете обновления с ненулевыми идентификаторами и вставляете остальные.

0 голосов
/ 17 августа 2011

Я использовал такой же подход, как Дэн, но включил идентификатор в само имя поля. Например, если бы у меня было три поля ответа, одно из которых новое, имена могли бы быть «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>

Имейте в виду, что обработка может выполняться любым количеством способов ... это подтверждение концепции.

...