Перезагрузите cfwindow после отправки - PullRequest
1 голос
/ 18 декабря 2010

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

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

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

Процесс выглядит следующим образом:

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

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

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

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

---> ---> Информация для администрирования ID курса Дата записи Создано Создано Дата Обновлено Обновлено Обновлено Информация о курсе • Код курса • Название курсаОписание курса (ограничение в 200 символов) ---> • Категория.,,Выберите из списка.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,• частота.,,Выберите из списка.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,• Статус .,,Выберите из списка.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,• Метод обучения.,,Выберите из списка.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Продолжительность Стоимость курса • Первоначально Обязательно Да Нет& Бык; Требуется запуск да нет Комментарии (Не более 200 символов) function cleanup () { // когда onHide, уничтожаем содержимое cfwindow ColdFusion.Window.destroy ( 'условие', правда); // перезагрузить родительскую страницу для отображения изменений 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, ширина: 1150, модальный: false, refreshOnShow: true }); // Назначаем переменную при получении объекта окна об-= ColdFusion.Window.getWindowObject ( 'prerequisite_body'); // Команда для принудительной установки центра окна ob.center (); // Очистим окно при закрытии ColdFusion.Window.onHide ( 'условие', очистка); } 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 ]

1 голос
/ 12 августа 2013

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

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

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

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

onClick="javascript:test('#url.empname#')"
1 голос
/ 04 мая 2011

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

...