2014-11-05 5 views
2

Я хочу использовать inputtext для фильтрации datagrid.фильтр-разделитель исходных текстов с помощью inputtext

Часть кода, как это:

<p:inputText value="#{bean.searchString}"> 
    <p:ajax event="keyup" update="grid" /> 
</p:inputText> 
<p:dataGrid var="item" value="#{bean.findItemsByName}" columns="9" layout="grid" rows="130" paginator="false" id="grid"> 
+0

Является ли это рабочий код? Если да, то где проблема? – ForguesR

+0

Не работает. – Aquilisk

+0

Можете ли вы предоставить код «bean»? – ForguesR

ответ

1

Там нас не встроенная функция, которая позволяет фильтровать DataGrid, но вы можете написать свой собственный.

Что-то вроде этого (с использованием библиотеки Google):

Bean:

import com.google.common.base.Predicates; 
import com.google.common.collect.Collections2; 
import com.google.common.collect.Lists; 

//The full list 
private List<String> names = new ArrayList<String>(); 
//The filtered list 
private List<String> filterednames = new ArrayList<String>(); 
private String filterValue; 

public void filterList() { 
    List<String> filteredList = Lists.newArrayList(Collections2.filter(
      getNames(), Predicates.containsPattern(filterValue))); 

setFilterednames(filteredList); 
} 

HXTML:

<p:inputText value="#{bean.filterValue}"> 
     <p:ajax event="keyup" update="grid" listener="#{bean.filterList()}" /> 
    </p:inputText> 
    <p:dataGrid var="name" value="#{bean.filterednames}" columns="9" layout="grid" rows="130" paginator="false" id="grid"> 
      <h:outputText value="#{name}" /> 
    </p:dataGrid> 
+0

Спасибо Эмиль Камински. Оно работает! – Aquilisk

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