2017-02-20 13 views
1

Вот что я намереваюсь делать в xpages.Коробка возврата возвращает соответствующую информацию, зависит от значения поля редактирования

Когда я ввожу что-то в поле редактирования, я нажимаю кнопку, в поле со списком отображается соответствующая информация.

Это дизайн на xpage, есть окно редактирования, кнопка и комбинированное поле. В поле редактирования используется переменная области сеанса, кнопка используется для частичного обновления поля со списком. В поле со списком соответствующие значения зависят от значения поля редактирования.

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
<xp:inputText id="inputText1" value="#{sessionScope.itemname}"></xp:inputText> 
<xp:button value="Label" id="button1"> 
    <xp:eventHandler event="onclick" submit="true" 
     refreshMode="partial" refreshId="comboBox1"> 
    </xp:eventHandler></xp:button> 
<xp:br></xp:br> 
<xp:br></xp:br> 
<xp:br></xp:br> 
<xp:comboBox id="comboBox1"> 
    <xp:selectItems> 
     <xp:this.value><![CDATA[#{javascript:var SetFirstValueBlank = @Text(""); 
return SetFirstValueBlank;    
}]]></xp:this.value> 
    </xp:selectItems> 
    <xp:selectItems> 
     <xp:this.value><![CDATA[#{javascript:var searchitem= getComponent("inputText1").getValue(); 
var result = @DbLookup(@DbName(),"itemListView", searchitem,1); 
return result;}]]></xp:this.value> 
    </xp:selectItems> 
</xp:comboBox> 
</xp:view> 

Пусть в представлении, он имеет много элементов, такие как яблоко, яблочные чипсы, яблочный сок, яблочный пирог, рыба, оранжевые и т.д.

Когда я запускаю программу, я набираю яблочный пирог точно , поле со списком может отображать точное значение (яблочный пирог) для меня, но если я просто набираю appl (не точное значение), поле со списком ничего не покажет. На самом деле, я думаю, что в поле со списком будут показаны яблоко, яблочные чипсы, яблочный сок и яблочный пирог для меня, но результат даст мне понять, что я ошибаюсь.

Я пересмотрел код, я думаю, что поле со списком ничего не возвращает для выбора, потому что я использую @DbLookup, поэтому и @DbLookup требует точного значения, поэтому поле со списком ничего не покажет.

Причина, по которой я выбираю использовать поле со списком, позволяет пользователю выбирать только одно значение.

Я думаю о @DbColumn, но он вернет все значения из столбца вида, поэтому я использую @DbLookup, но для этого нужно точное значение для поиска.

Как я могу вернуть поле со списком соответствующей информации, зависит от значения поля ввода.

Благодарен за ваш совет. Спасибо.

ответ

1

Используйте view's getAllEntriesByKey() с параметром exact, чтобы установить все значения, начинающиеся с данного ключа (в вашем примере «яблоко»).

1

вместо использования inputText + combo, рассмотрели ли вы использование элемента управления, который обеспечивает такое поведение в одном элементе управления?

Если вы можете использовать библиотеку расширений, вы можете использовать элемент управления фильтрацией dojo или элемент управления combjo dojo.

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

вот пример из блога Brad Balassaitis в https://www.google.com.au/amp/s/xcellerant.net/2013/09/18/xpages-dojo-filtering-select/amp/?client=safari

по умолчанию записи совпадает с «начинается с» стиль, поэтому «пирог» не будет соответствовать «яблочному пирогу», но «приложение» будет.

если вы хотите фильтрации выбрать, чтобы соответствовать любой части слова, то вы установите queryExpr следующим

<xe:djFilteringSelect id="djFilteringSelect1" value="#{viewScope.myvalue}" autoComplete="false"> 
    <xe:this.queryExpr><![CDATA[${javascript:"*$\{0}*"}]]></xe:this.queryExpr> 
    <xp:selectItems id="selectItems1" value="#{myBean.mySelectItems}"/> 
</xe:djFilteringSelect>