Перезагрузите cfwindow после отправки

Я использую JavaScript для управления созданием объекта cfwindow в ColdFusion.

Окно cfwindow прикреплено к форме, которая позволяет пользователям выбирать подпись или несколько записей и назначать или отменять их назначение для одной записи.

Большинство форм в cfwindow предоставляют пользователю возможность вводить элементы формы и затем отправлять, затем окно уничтожается, а родительское окно обновляется, отображая результаты. В моем случае пользователь может выполнить несколько представлений в объекте окна, прежде чем это будет сделано.

Поток такой:

  1. Пользователь открыл запись.
  2. Пользователь нажимает кнопку, которая связана с созданием объекта cfwindow.
  3. Пользователь назначает или отменяет назначение записей родительской записи.
  4. Объект cfwindow обновляется при каждой отправке назначения.
  5. Пользователь закрывает (уничтожает) объект окна с помощью кнопки закрытия.
  6. Родительское окно обновляется.

Теперь у меня есть все, но № 4 работает. Окно обновляется; однако, это не показывает записи изменений (назначенных или неназначенных). Я подтвердил, что слой данных работает и в таблицу внесены изменения; однако он не отображается пользователю.

Итак, мне нужна помощь с контролем формы onSuccess. Кстати, я использую cfform.

Вот мои примеры кода. Если вы посмотрите внизу файла addit.cfm, вы увидите код для cfmodule. Эта страница такая же, как cfassign.cfm. Единственное отличие состоит в том, что я создал новую форму, поскольку cfwindow не позволяет использовать одну и ту же форму между родителем и потомком, когда это делает cfmodule.

addedit.cfm

 <!------------------------------------------------------------------

АТРИБУТЫ ------------------------------------------------- ------------------>

---> ---> Административная информация Идентификатор курса Дата Запись Создана Создана Дата Обновлена ​​Обновлена ​​Информация о курсе курса • Код курса • Название курса Описание курса (не более 200 символов) ---> • Категория.,, Выберите из списка.,,,,,,,,,,,,,,,,,,,,,,,,,,,,, • частота.,, Выберите из списка.,,,,,,,,,,,,,,,,,,,,,,,,,,,,, • Статус.,, Выберите из списка.,,,,,,,,,,,,,,,,,,,,,,,,,,,,, • Метод обучения.,, Выберите из списка.,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Продолжительность Стоимость курса • Начальная требуется Да Нет • Требуется запуск Да Нет Комментарии (ограничение в 200 символов) function cleanup() { // когда onHide, уничтожить содержимое cfwindow ColdFusion.Window.destroy('prerequisite',true); // перезагрузить родительскую страницу для отображения изменений window.location.reload(); } function showWin(id) { // у нас есть один? try {ColdFusion.Window.destroy('prerequisite',true); } catch(e) { } ColdFusion.Window.create('prerequisite','Назначить предварительные условия для #qryCourses.Course_Title#','cfassign.cfm?id='+id,{height:400,width:1150, модальный: ложь,refreshOnShow: истинный}); // Присваиваем переменную при получении объекта окна ob=ColdFusion.Window.getWindowObject('prerequisite_body'); // Команда для принудительной установки центра окна ob.center(); // Очищаем окно при закрытии ColdFusion.Window.onHide('prerequisite',cleanup); } cfassign.cfm --->
<cfif StructKeyExists(form, "btnUnassignCourses") and StructKeyExists(form, "AssignedCourses") and len( form.AssignedCourses ) gt 0>
    <!--- Remove courses as pre-requisites from the parent course. --->
        <cfquery name="RemoveCoursePrerequisite" datasource="#Request.App.DSN#" >

        </cfquery>

<cfelseif StructKeyExists(form, "btnAssignCourses") and StructKeyExists(form, "UnassignedCourses") and len( form.UnassignedCourses ) gt 0>
    <!--- Add course as pre-requisites for the parent course. --->
        <cfquery name="AddCoursePrerequisite" datasource="#Request.App.DSN#" >

        </cfquery>
</cfif>

         <table>
             <tr>
                 <div class="ModuleFullName">
             <td>
                <div class="fieldWrapperControl">
                    <label>Assigned Courses (#qryAssignedCourses.Recordcount#)</label>
                    <cfselect
                        name="AssignedCourses"
                        style="font-size:.8125em; height:200px; width:500px;"
                        query="qryAssignedCourses"
                        display="Course_Description"
                        value="ID"
                        queryposition="below"
                        editable="no"
                        multiple="true">
                    </cfselect> 
                </div>

            </td>
            <div class="fieldWrapperButton">
            <td style="vertical-align:middle;">

                <cfinput type="submit" name="btnAssignCourses" value="<<" style="display:block;" />
                <cfinput type="submit" name="btnUnassignCourses" value=">>" style="display:block;" />
            </td>

            </div>
            <td>
                <div class="fieldWrapperControl">
                    <label>Unassigned Courses (#qryUnassignedCourses.Recordcount#)</label>
                    <cfselect
                        name="UnassignedCourses"
                        style="font-size:.8125em; height:200px; width:500px;"
                        query="qryUnassignedCourses"
                        display="Course_Description"
                        value="Unassigned_ID"
                        queryposition="below"
                        editable="no"
                        multiple="true">
                    </cfselect> 
                </div>
            </td>
            </tr>
            <tr>
                <td colspan="3" style="font-size:.9em;"><label>** Press and hold down the Ctrl OR Shift key to select multiple courses.</label></td>
            </tr>
            </table>

2 ответа

Я полагаю, вы должны добавить атрибут refreshonShow="true" в вашем cfwindow

В этом случае я думаю, что refreshonshow не работает, так как вы хотите, чтобы ваше окно обновлялось при отправке. Так что вызовите некоторую функцию из дочернего окна. И код для этого дочернего окна должен существовать в части скрипта родительского окна.

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

function test(name) 
{
    ColdFusion.Window.hide(name);
    window.location.reload();
}

Поэтому я дал кнопку с именем скрыть окно в моем дочернем окне, и при нажатии этой кнопки будет активирована функция test() из-за этого кода в дочернем окне.

onClick="javascript:test('#url.empname#')"
Другие вопросы по тегам