1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Решено Про value picker из extention library

Тема в разделе "Lotus - Xpages", создана пользователем Nick Nick, 27 янв 2016.

Метки:
  1. Nick Nick

    Nick Nick Member

    Репутация:
    0
    Регистрация:
    4 мар 2015
    Сообщения:
    10
    Симпатии:
    0
    Доброго дня!
    Насколько я понял в xPages нет "чистого" аналога функции @Picklist, который позволяет вернуть из выбранного элемента все значения выбранной строки. Нашел в Extension Library компонент Value Picker, но он вроде предлагает заполнить только одно поле на странице, после выбора значения из вьюшки. Как сделать так, чтобы после выбора значения из списка, заполнялись сразу несколько полей на форме?

    PS/ Если тема ранее обсуждалась, киньте плиз ссылочкой, а то может с бодуна утра просмотрел...
     
  2. NickProstoNick

    NickProstoNick Статус как статус :)
    Lotus team

    Репутация:
    0
    Регистрация:
    22 авг 2008
    Сообщения:
    1.785
    Симпатии:
    42
    мм.... @Picklist не позволяет заполнять поля, а всего лишь предоставляет данные.
    Как сделать - выбрать нужное событие и обрабатывать.
    Например событие изменения значения компонента
     
  3. Nick Nick

    Nick Nick Member

    Репутация:
    0
    Регистрация:
    4 мар 2015
    Сообщения:
    10
    Симпатии:
    0
    Спасибо, NickProstNick.
    Есть еще у кого-нибудь опыт по использованию Value Picker из Extention Library ?
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)
    Lotus team

    Репутация:
    0
    Регистрация:
    22 авг 2008
    Сообщения:
    1.785
    Симпатии:
    42
    просто не понятно какие тут сложности?
     
  5. Nick Nick

    Nick Nick Member

    Репутация:
    0
    Регистрация:
    4 мар 2015
    Сообщения:
    10
    Симпатии:
    0
    Ну давайте с конкретным примером.
    На Xpage три поля (фамилия, регион, телефон) которые надо заполнить, осуществив выбор значения из модального окна, которое выдает наш Value Picker. В дизайнере, в свойствах этого компонента предлагают указать источник: xe:dominoViewValuePicker в котором предлагается указать какую вьюшку взять для отображения и какой из нее столбец. Тут проблем нет: модальное окно отображается и выводится линейный список фамилий (для исследований выбрал этот столбец)
    Для возврата значения, в свойствах Value Picker предлагается указать параметр for, в котором предлагают выбрать одно из созданных трех полей на этой странице. А мне надо заполнить все три поля на странице, соответствующие сделанному выбору. Т.е. выбрав в списке Семена Семеновича Горбункова и нажав ОК, надо чтобы заполнились все три поля на странице: и фамилия и телефон и регион.
     
  6. NickProstoNick

    NickProstoNick Статус как статус :)
    Lotus team

    Репутация:
    0
    Регистрация:
    22 авг 2008
    Сообщения:
    1.785
    Симпатии:
    42
    В lotusscript обрабатывали событие кнопки, тут же надо немного подумать.
    В событии поля, к которому привязан пикер нужно написать код, который заполнит все остальные поля.
    Я использую событие "OnChange".
    Одно неудобство - тут нужно работать с уникальным ключом, который позволит вытянуть все остальные данные
     
  7. Nick Nick

    Nick Nick Member

    Репутация:
    0
    Регистрация:
    4 мар 2015
    Сообщения:
    10
    Симпатии:
    0
    В качестве ключа в этой вьюшке как раз стоит скрытый столбец c формулой @DocumentUniqueID. И именно его этот Picker возвращает на страницу в указанное поле inputText1, тоже для меня непонятный прикол )). А в лотусе, да все элементарно на собаках делалось:
    choice := @PickList( [Custom] : [Single] ; ""; "v_users" ; "Исполнители" ; "Выберите" ; 1);
    tmpField1 := @DbLookup("":"NoCahce";"";"v_users";choice;4);
    tmpField2 := @DbLookup("":"NoCahce";"";"v_users";choice;5);
    tmpField3 := @DbLookup("":"NoCahce";"";"v_users";choice;6);
    @SetField("fio";tmpField1);
    @SetField("tel";tmpField2);
    @SetField("reg";tmpField3);

    В любом случае спасибо за совет, буду думать дальше.
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)
    Lotus team

    Репутация:
    0
    Регистрация:
    22 авг 2008
    Сообщения:
    1.785
    Симпатии:
    42
    Т.е. я так понимаю примеры смотреть - религия не позволяет?
     
  9. Nick Nick

    Nick Nick Member

    Репутация:
    0
    Регистрация:
    4 мар 2015
    Сообщения:
    10
    Симпатии:
    0
    Нет нет, с религией все в порядке! )))
    Завал по другим фронтам, идея и решение понятно вполне.
    Найду кусок времени и порешаю.
     
  10. NickProstoNick

    NickProstoNick Статус как статус :)
    Lotus team

    Репутация:
    0
    Регистрация:
    22 авг 2008
    Сообщения:
    1.785
    Симпатии:
    42
    C ValuePicker есть нюанс.

    Строка в ValuePicker может иметь вид Алиас|Значение.
    Вид, который используется для наполнения списка должен иметь следующую структуру:
    Первая колонка - что угодно ( У меня это ФИО по алфавиту), вторая колонка - то, что ValuePicker будет возвращать (значение). (У меня это Lotus-name).
    В качестве алиаса можно указать имя любой колонки из вида. Имя колонки указывается в свойстве labelColumn в провайдере пикера

    Ниже пример... правда ссылаюсь на names.nsf, чтоб уж наверняка заработало.

    HTML:
    <?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:table><xp:tr><xp:td>Lotus Name</xp:td>
    <xp:td style="width:400px">
    <xp:inputText id="inputText1" style="width:90%">
    <xp:eventHandler event="onchange" submit="true"
    refreshMode="complete">
    <xp:this.action><![CDATA[#{javascript:var choice = getComponent("inputText1").value
    getComponent("inputText2").value = @DbLookup("names.nsf","($Users)",choice,"MailServer")
    getComponent("inputText3").value = @DbLookup("names.nsf","($Users)",choice,"MailFile")
    }]]></xp:this.action>
    </xp:eventHandler>
    </xp:inputText>
    <xe:namePicker id="namePicker14" for="inputText1">
    <xe:this.dataProvider>
    <xe:dominoNABNamePicker nameList="people">
    </xe:dominoNABNamePicker>
    </xe:this.dataProvider>
    </xe:namePicker>
    </xp:td>
    </xp:tr>
    <xp:tr>
    <xp:td>Server
    </xp:td>
    <xp:td>
    <xp:inputText id="inputText2" style="width:90%"></xp:inputText></xp:td>
    </xp:tr>
    <xp:tr>
    <xp:td>DB path</xp:td>
    <xp:td>
    <xp:inputText id="inputText3" style="width:90%"></xp:inputText></xp:td>
    </xp:tr>
    </xp:table>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:table id="table1"><xp:tr><xp:td>Lotus Name</xp:td>
    <xp:td style="width:400px">
    <xp:inputText id="inputText4" style="width:90%">
    <xp:eventHandler event="onchange" submit="true"
    refreshMode="partial" refreshId="table1">
    <xp:this.action><![CDATA[#{javascript:var choice = getComponent("inputText4").value
    getComponent("inputText5").value = @DbLookup("names.nsf","($Users)",choice,"MailServer")
    getComponent("inputText6").value = @DbLookup("names.nsf","($Users)",choice,"MailFile")
    }]]></xp:this.action>
    </xp:eventHandler>
    </xp:inputText>
    
    <xe:valuePicker id="valuePicker1" for="inputText4">
    <xe:this.dataProvider>
    <xe:dominoViewValuePicker viewName="($Users)"
    databaseName="names.nsf" labelColumn="FullName">
    </xe:dominoViewValuePicker>
    </xe:this.dataProvider>
    </xe:valuePicker></xp:td></xp:tr><xp:tr><xp:td>Server
    </xp:td>
    <xp:td>
    <xp:inputText id="inputText5" style="width:90%"></xp:inputText></xp:td>
    </xp:tr>
    <xp:tr>
    <xp:td>DB path</xp:td>
    <xp:td>
    <xp:inputText id="inputText6" style="width:90%"></xp:inputText></xp:td>
    </xp:tr>
    </xp:table> 
    <xp:br></xp:br>
    <xp:br></xp:br></xp:view>
    
     
    #10 NickProstoNick, 1 фев 2016
    Последнее редактирование модератором: 1 фев 2016
    2 пользователям это понравилось.
  11. Nick Nick

    Nick Nick Member

    Репутация:
    0
    Регистрация:
    4 мар 2015
    Сообщения:
    10
    Симпатии:
    0
    Спасибо NickProstoNick, исчерпывающе!
    Прикрутил, все работает.
     
  12. NickProstoNick

    NickProstoNick Статус как статус :)
    Lotus team

    Репутация:
    0
    Регистрация:
    22 авг 2008
    Сообщения:
    1.785
    Симпатии:
    42
    Спасибо много, +в репутацию будет достаточно :)
     
    2 пользователям это понравилось.
  13. Nick Nick

    Nick Nick Member

    Репутация:
    0
    Регистрация:
    4 мар 2015
    Сообщения:
    10
    Симпатии:
    0
    Прожал "Мне нравится", это оно?
     
  14. alexas1

    alexas1 Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    10 апр 2014
    Сообщения:
    656
    Симпатии:
    228
    кнопа "Репутация" (6-я слева или 4-я справа :)
    жамкаешь и пишешь стомильёнов в репу )))
     
  15. Nick Nick

    Nick Nick Member

    Репутация:
    0
    Регистрация:
    4 мар 2015
    Сообщения:
    10
    Симпатии:
    0
    Ага сделал, счетчик поменялся. :)
     
Загрузка...

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