2015-05-05 3 views
2

В примере «Дополнительно»: http://www.primefaces.org/showcase/ui/input/oneMenu.xhtml, я смог иметь два столбца в каждом из вариантов в моем oneMenu, но фильтрация происходит только на ярлыке элемента.selectOneMenu фильтр по различным столбцам, а не только по метке

То, что я хотел бы сделать, - это фильтр по любому из столбцов (в отличие от примера, оба моих столбца содержат только текст, поэтому они могут быть фильтруемыми). Возможно ли это?

Добавление filter="true" к любому из <p:column> с, кажется, не имеют никакого эффекта, а утилита: filterFunction писать пользовательские правила фильтрации, кажется, работает только на этикетке также!

<p:outputLabel for="advanced" value="Advanced:" /> 
<p:selectOneMenu id="advanced" value="#{selectOneMenuView.theme}" converter="themeConverter" panelStyle="width:180px" 
         effect="fade" var="t" style="width:160px" filter="true" filterMatchMode="startsWith"> 
    <f:selectItems value="#{selectOneMenuView.themes}" var="theme" itemLabel="#{theme.displayName}" itemValue="#{theme}" /> 
    <p:column style="width:10%"> 
    <h:outputText styleClass="ui-theme ui-theme-#{t.name}" /> 
    </p:column> 
    <p:column> 
    <h:outputText value="#{t.displayName}" /> 
    </p:column> 
</p:selectOneMenu> 

ответ

1

Нет, извините, это невозможно с помощью selectOneMenu. Вы можете добавить filterFunction, но в этой функции вы можете фильтровать клиентскую сторону на ярлыке.

В качестве альтернативы вы можете использовать PrimeFaces AutoComplete, который может искать серверную сторону на любом месте, а также отображать пользовательский контент.

+0

Похоже, что 'autocomplete' требует от нас предоставления параметров фильтрации через атрибут' completeMethod'? Кроме того, он не поддерживает чистую фильтрацию на стороне клиента (был запрошен [запрос функции] (https://code.google.com/p/primefaces/issues/detail?id=842), но был закрыт со статусом : "wont-fix"). – mystarrocks

+0

Да .. Adnd Автозаполнение клиентской стороны нелогично, так как оно не обеспечивает преимущество производительности над selectonemenu с фильтрацией – Kukeltje

+0

Извините, я написал клиентскую часть в своем ответе, который должен был быть серверным. Исправлено (было поздно ;-)) – Kukeltje

0

вы можете это сделать, если вы пишете <f:selectItems value="#{estadoParque.vehiculos}" var="v" itemValue="#{v}" itemLabel="#{v.placa} - #{v.marca}"/>

добавляя те же элементы колонн itemLabel="#{v.placa} - #{v.marca}"

<p:column headerText="Placa"> 
          <h:outputText value="#{t.placa}" /> 
         </p:column> 
         <p:column headerText="Marca"> 
          <h:outputText value="#{t.marca}" /> 
         </p:column> 

и ваш фильтр будет как filterMatchMode="contains"

это работает !!