Решено Работа с диалогом

Тема в разделе "Lotus - Xpages", создана пользователем motogarri, 22 апр 2015.

  1. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Привет.
    Окрываю диалогбокс из панели на странице dijit.byId("myDialog").show();
    В диалоге надо заполнить несколько полей и при закрытии создать документ с данными из этих полей.

    Разобрался как открыть диалог, а вот дальше ни в какую...
    Создание нового документа вешать на копку "ОК" в диалоге? У меня никак не получается добраться до полей, как из них значения вытащить?
     
  2. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Тут лучше наверно на ssjs делать.
    Примерно так:
    Код (HTML5):
    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex">
     
     
    <xp:inputText id="inputText2"></xp:inputText>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:button value="show dialog" id="button3">
    <xp:eventHandler event="onclick" submit="true"
    refreshMode="partial" refreshId="dialog1">
    <xp:this.action><![CDATA[#{javascript:getComponent("dialog1").show();}]]></xp:this.action>
    </xp:eventHandler></xp:button>
    <xp:br></xp:br>
    <xe:dialog id="dialog1" title="Dialog header">
    <xe:dialogButtonBar id="dialogButtonBar1">
    <xp:panel>
    <xp:inputText id="inputText1"></xp:inputText></xp:panel></xe:dialogButtonBar>
    <xe:dialogContent id="dialogContent1">
    <xp:panel>
    <xp:button value="ok" id="button1">
    <xp:eventHandler event="onclick" submit="true"
    refreshMode="partial" refreshId="inputText2">
    <xp:this.action><![CDATA[#{javascript:var value = getComponent("inputText1").getValue();
    getComponent("inputText2").setValue(value);
    getComponent("dialog1").hide();




    //создание дока
    var document = database.createDocument();
    document.replaceItemValue("field", value);
    document.save();}]]></xp:this.action>
    </xp:eventHandler></xp:button>
    <xp:button value="cancel" id="button2">
    <xp:eventHandler event="onclick" submit="true"
    refreshMode="partial" refreshId="dialog1">
    <xp:this.action><![CDATA[#{javascript:getComponent("dialog1").hide();}]]></xp:this.action>
    </xp:eventHandler></xp:button></xp:panel></xe:dialogContent></xe:dialog></xp:view>
     
  3. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
    1. Прочитать\записать:
    var value = dijit.byId('myTextbox').getValue()

    var test = dijit.byId("myTextbox");
    test.set("value", "somevalue");
    но тут есть тонкости

    так будет работать всегда: dojo.byId("myTextbox").value = "somevalue"
    ------------------------------
    Но это всё CSJS, а док надо создавать в SSJS, тут танцы с бубнами для начинающих, такшта проще работать просто с полями (напр. как JohnLemon написал)
     
  4. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Extension library на сервер надо установить? Не смогу пока ((

    С dojo диалогом получилось добраться до полей. Там у меня косяк был в том, что я использовал обычные поля. Сейчас по сделал по такому примеру и сработало:
    Код (HTML5):
    <input data-dojo-type="dijit.form.TextBox" id="myTextbox"></input>
    Видел на форуме много раз поднимался вопрос, как передать данные в диалоге из CSJS в SSJS. И даже успешно все решалось, но я ничего не понял. Пните пожалуйста в нужную сторону.
    [DOUBLEPOST=1429831024,1429830987][/DOUBLEPOST]И что-то меня с форума выкидывает постоянно. раз 10 перелогивался и набирал сообщение
     
  5. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Да
    Это у всех так с переходом на новый движок )
    Вот интересный вариант с панелью:
    Код (HTML5):
    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:this.resources>
    <xp:dojoModule name="dijit.Dialog"></xp:dojoModule>
    </xp:this.resources>
    <xp:scriptBlock id="scriptBlock3">
    <xp:this.value><![CDATA[XSP.addOnLoad(function(){
    function dialog_create(id) {
     var dialogWidget = dijit.byId(id);
     if( dialogWidget ) dialogWidget.destroyRecursive(true);
     dialogWidget = new dijit.Dialog( { }, dojo.byId(id));
     var dialog = dojo.byId(id);
     dialog.parentNode.removeChild(dialog);
     var form = document.forms[0]; form.appendChild(dialog);
     dialogWidget.startup();
    }
    dialog_create("myDialog")
    });
    ]]></xp:this.value>
    </xp:scriptBlock>
    <xp:br></xp:br>
    <xp:inputText id="inputText2"></xp:inputText>
    <xp:br></xp:br>
    <div id="myDialog" style="display:none">
    <xp:inputText id="inputText1"></xp:inputText>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:button value="save doc" id="button1">
    <xp:eventHandler event="onclick" submit="true"
    refreshMode="partial">
    <xp:this.action><![CDATA[#{javascript:var value = getComponent("inputText1").getValue();
    //присвоение компоненту
    getComponent("inputText2").setValue(value);
    //создание дока
    var doc = database.createDocument();
    doc.replaceItemValue("form", "list");
    doc.replaceItemValue("field", value);
    doc.save();}]]></xp:this.action>
    </xp:eventHandler></xp:button>
    </div>
    <xp:br></xp:br>
    <xp:button value="show dialog" id="button2">
    <xp:eventHandler event="onclick" submit="false">
    <xp:this.script><![CDATA[dijit.byId("myDialog").show();]]></xp:this.script>
    </xp:eventHandler>
    </xp:button>
    </xp:view>
     
    Думаю поможет...
     
  6. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
  7. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Спасибо за пример и статью.
    Сам пример рабочий, а когда у себя на хпейдже делаю, value = getComponent("inputText1").getValue() оказывается пустым.
    Ну да ладно, направление понял, разберусь.
     
  8. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Разобрался. У меня к панели, открываемой в диалоге, был подключен источник данных. Убрал-заработало.
     
    2 пользователям это понравилось.
Загрузка...
Похожие Темы - Работа диалогом
  1. Andrey Kha
    Ответов:
    0
    Просмотров:
    20
  2. Hoasker
    Ответов:
    0
    Просмотров:
    64
  3. garri671
    Ответов:
    0
    Просмотров:
    53
  4. lelik200969
    Ответов:
    0
    Просмотров:
    50
  5. Kozolick
    Ответов:
    0
    Просмотров:
    137

Поделиться этой страницей