Перезагрузите cfwindow после отправки
Я использую JavaScript для управления созданием объекта cfwindow в ColdFusion.
Окно cfwindow прикреплено к форме, которая позволяет пользователям выбирать подпись или несколько записей и назначать или отменять их назначение для одной записи.
Большинство форм в cfwindow предоставляют пользователю возможность вводить элементы формы и затем отправлять, затем окно уничтожается, а родительское окно обновляется, отображая результаты. В моем случае пользователь может выполнить несколько представлений в объекте окна, прежде чем это будет сделано.
Поток такой:
- Пользователь открыл запись.
- Пользователь нажимает кнопку, которая связана с созданием объекта cfwindow.
- Пользователь назначает или отменяет назначение записей родительской записи.
- Объект cfwindow обновляется при каждой отправке назначения.
- Пользователь закрывает (уничтожает) объект окна с помощью кнопки закрытия.
- Родительское окно обновляется.
Теперь у меня есть все, но № 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#')"