2015-01-27 3 views
0

Мне предоставлен проект XPages, который я не разработал. Проект имеет OneUILayout, который включает в себя панель поиска «фасет». Можно ли закодировать фильтр на фасбеле панели поиска, чтобы исключенные записи были опущены, у которых есть поле с определенным значением. У меня очень мало опыта работы с XPages. Результаты поиска выводятся на OneUI_searchpage.xsp, где поле редактирования отображает строку поиска, а затем динамическую панель просмотра показывает извлеченные записи. Я приложил исходный код для этих двух пунктов ниже. СпасибоМогу ли я фильтровать строку поиска Xpages

<xp:label value="Search String:" id="label1"></xp:label> 
    <xp:inputText id="inputText1" value="#{param.search}"></xp:inputText> 
     <xp:panel id="maincontentpanel"> 
     <xe:dynamicViewPanel rows="30" id="dynamicViewPanel1"  
      width="100%"> 
       <xe:this.data> 
       <xp:dominoView viewName="ContractsFlatByYear" 
        var="view"> 
        <xp:this.search><![CDATA[#{javascript:return 
         param.search;}]]></xp:this.search> 
       </xp:dominoView> 
      </xe:this.data> 
     </xe:dynamicViewPanel> 

После некоторых консультаций с stwissel ниже, я внес изменения в приложение, чтобы иметь флажок на результаты поиска XPage с ним проверяется по умолчанию и создал дополнительный вид на тот же выход. Один вид, чтобы показать отмененные контракты, и один, чтобы опустить отмененные контракты. Соответствующий раздел Xpage теперь выглядит следующим образом:

<xp:checkBox text="Omit Cancelled Contracts" 
    id="OmitCancelled" defaultChecked="true" checkedValue="True" 
    uncheckedValue="False" style="padding-left:5.0em" value="# 
    {viewScope.viewSel}"> 
    <xp:eventHandler event="onchange" submit="true" refreshMode="partial" 
    refreshId="dynamicViewPanel1"></xp:eventHandler> 
</xp:checkBox> 
<xp:panel id="maincontentpanel"> 
    <xe:dynamicViewPanel rows="30" id="dynamicViewPanel1" 
     width="100%" partialRefresh="true"> 
    <xe:this.data> 
     <xp:dominoView var="view"> 
     <xp:this.viewName> 
      <![CDATA[#{javascript:var cancelledYesNo = viewScope.viewSel 
       = getComponent("OmitCancelled").getValue(); 
       if(cancelledYesNo == "True"){ 
        viewName = "ContractsFlatByYear"} 
       else { 
       viewName = "ContractsFlatByYearandCancelled"}}]]> 
     </xp:this.viewName> 
    <xp:this.search><![CDATA[#{javascript:return param.search;}]] 
     ></xp:this.search> 
    </xp:dominoView> 
</xe:this.data> 
</xe:dynamicViewPanel> 

Это, кажется, работает, но у меня есть флажок OnChange событие для применения частичного обновления на dynamicviewpanel но только освежает, когда я нажимаю на самом dynamicviewpanel только

ответ

0

Панель поиска фаска захватывает то, что вы хотите найти, и отправляет его в указанные XPages для обработки.

У вас есть 2 варианта:

  • Alter фасет послать дополнительное условие к странице поиска
  • Alter функция поиска на странице поиска (один запрос будет размещена на) для фильтрации, что (если он статичен).

Обратите внимание: фильтрация в коде не функция безопасности (в случае, если вы собирались это). Для этого есть поля для чтения и автора.

XPages в своем ядре - это JSF с некоторыми фирменными блюдами вокруг Domino. Вы можете проверить мой article series на них.

Update

на основе фрагмента кода, ваш может получить желаемый результат достаточно быстро. Измените формулу выбора вида и добавьте & conContractStatus <> "cancelled". Сначала нужно проверить, используется ли это представление в другом месте, чтобы показать отмененные контракты. Если это так, скопируйте представление (например, добавьте Active за именем) и внесите туда изменения.

Update 2

Ваш код не возвращает значение, и вам не нужно, чтобы получить к компоненту

<xp:this.viewName> 
     <![CDATA[#{javascript:return (viewScope.viewSel=="True") ? "ContractsFlatByYear" : "ContractsFlatByYearandCancelled";}]]> 
    </xp:this.viewName> 

Дайте нам знать, как она идет

+0

Спасибо так много за ваш ответ. Таким образом, «фасеты» не могут быть изменены, это правильно? Я посмотрю на ваши два варианта и посмотрю, что я могу сделать. В основном записи - это Контракты с полем conContractStatus, и я хочу опустить те, которые являются conContractStatus = Отменены. – AJF

+0

Вы можете изменить содержимое грани. Но ваш случай может быть на самом деле намного проще. Проверьте код, который выполняет поиск: может быть db.ftsearch или view.ftsearch в более позднем случае просто изменит формулу выбора вида, в первом переключателе на поиск вида. Btw. Если вы отправляете образец кода, то ответы меньше догадок – stwissel

+0

Я добавил несколько исходных кодов для страницы вывода результатов поиска. Все еще смотря – AJF

Смежные вопросы