Решено Подтверждение удаления документов в dataview

victorhalf

Well-known member
29.05.2007
74
1
#1
День добрый
Помогите реализовать сабж.
Я использую датавью, кнопки на placeBarActions(из Applicationlayout), тип- basicLeafNode
на onClick кнопки вешаю return Confirm("Delete?"), а в submitValue пишу deleteDocs,

по идее должно спросить. и если нажал "ОК", то выполнить ssjs в моём кастом контроле с введенным submitValue.

На деле получаю свой вопрос и что бы я не ответил мой ssjs даже не запускается(слушал дебагером).
Если же очищаю onClick, то получаю молчаливое правильное выполнение ssjs.
Очень хочется их совместить, а где проблема не пойму.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#2
submit идет на сервер (если он вызван), а запрос на клиенте
и если нажал "ОК", то выполнить ssjs в моём кастом контроле с введенным submitValue.
и где вызывается сам сабмит (где код?)
короче, пример с сохранением:
Для просмотра контента необходимо: Войти или зарегистрироваться
 
Последнее редактирование модератором:

victorhalf

Well-known member
29.05.2007
74
1
#3
submit идет на сервер (если он вызван), а запрос на клиенте
и где вызывается сам сабмит (где код?)
Ух ты, еще и как то сабмит нужно вызывать рвучную? А как?
Смотри, вот такая конструкция работает, без каких то доп. телодвижений. Но молча.
JavaScript:
<xe:basicLeafNode label="Видалити заявку"
submitValue="viewDeleteSelected"></xe:basicLeafNode>
 
плюс
 
<xp:eventHandler event="onItemClick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
	var vSubmitValue = context.getSubmittedValue();
	if (vSubmitValue=="viewDeleteSelected"){код по удалению}
</xp:this.action></xp:eventHandler>
а если изменить так
JavaScript:
<xe:basicLeafNode label="Видалити заявку"
submitValue="viewDeleteSelected">
<xe:this.onClick><![CDATA[return confirm("Точно удалить?")]]></xe:this.onClick>
</xe:basicLeafNode>
то отработает конфирм, а эвент хендлер - нет
или его как то можно дернуть принудительно из csjs?
 

alexas1

Lotus team
10.04.2014
726
145
#4
@victorhalf, в твоей логике на клике сначала отработает CSJS, а потом SSJS.
Соответственно в CSJS надо получить confirm и сделать его доступным в SSJS: напр. через SubmittedValue.
Записать чото в SubmittedValue на CSJS - это записать в поле с ID = "$$xspsubmitvalue" (на страничке оно есть всегда - это <input type="hidden" name="$$xspsubmitvalue">)
Это один из десятка вариантов.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#5
стесняюсь спросить, а что мешает вызвать SSJS прямо из события OnClick там где confirm? SubmittedValue тут не нужен.
 

alexas1

Lotus team
10.04.2014
726
145
#6
стесняюсь спросить, а что мешает вызвать SSJS прямо из события OnClick там где confirm?
:)А ничО не мешает - это будет 11 вариант. @victorhalf - у надо прояснить для себя, как ващще триггерят CSJS из SSJS. И наоборот. Человек учится.
 

victorhalf

Well-known member
29.05.2007
74
1
#7
Спасибо за советы
стесняюсь спросить, а что мешает вызвать SSJS прямо из события OnClick там где confirm? SubmittedValue тут не нужен.
Знал бы как - обязательно бы вызвал. А из того что я читал через сабмиттед валуэ чуть ли не единственный пОнятый мной способ дергать ssjs.

пойду читать про "$$xspsubmitvalue",
хотя всё равно не пойму, во втором моем варианте submitValue остается заполненным, а обработки эвент хендлера нет, значит его как то нужно принудительно вызывать?
ну да ладно, почитаю авось проясниться :)
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#8
Как по мне - Remote Service легко и удобно
 
Последнее редактирование модератором:

victorhalf

Well-known member
29.05.2007
74
1
#11
Как по мне - Remote Service легко и удобно
нее, в эти тапки я пока не влажу:) мельком посмотрел - штука вроде удобная. может со временем...
но пока подглядел что делает сам лотус
JavaScript:
<xe:basicLeafNode label="Видалити заявку">
<xe:this.onClick><![CDATA[
if (XSP.confirm("Точно удалить?")){
XSP.setSubmitValue("viewDeleteSelected");
XSP.fireEvent(arguments[0],"view:_id1:ccApp:_id5", "view:_id1:ccApp:applicationLayout1", null, true, 2, null)
}]]></xe:this.onClick>
</xe:basicLeafNode>
Всем спасибо за советы