2013-10-24 1 views
1

내 jsf 페이지에있는 데이터 테이블에 전역 필터를 구현하려고합니다.글로벌 <p:datatable><p : selectOneMenu>가있는 필터가 작동하지 않습니다.

<p:inputText id="globalFilter" onkeyup="examTable.filter();" style="width:200px" /> 

을하지만 난이 SelectOneMenu 구성 요소와 동일한 접근 방식을 시도 할 때, 그것은 작동하지 않습니다 입력 텍스트 필터는 다음 코드로 작동합니다.

<p:selectOneMenu id="state" value="#{examenListBean.stateOption}"onchange="examTable.filter();"> 

     <f:selectItems value="#{examenListBean.etatExamOptions}"/> 

</p:selectOneMenu> 

하지만 아무 소용로 :

나는이 코드를 시도했습니다. 여기

내 페이지의 : 데이터 테이블 태그 : 어쩌면 서버 측

<p:dataTable id="tabexam" 
       paginatorPosition="bottom" 
       var="exam" 
       value="#{examenListBean.listexam}" 
       widgetVar="examTable" 
       emptyMessage="Aucun résultat n'a été trouvé avec les critères donnés" 
       filteredValue="#{examenListBean.filteredexams}" 
       paginator="true" 
       rows="30" 
       paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
       rowsPerPageTemplate="5,10,15,30" 
       resizableColumns="true"> 
+0

http://stackoverflow.com/questions/17858753/primefaces-custom-component-for-live-filtering-in-datatable과 관련 될 수 있습니다. –

답변

2

나는 똑같은 문제를 겪었고, 그것은 단지 정사각형이 그것을 허용하지 않는 것처럼 보인다. 내 최종 목표는 열에서 'selectOneMenu'테이블을 이동하여 헤더에 넣을 수 있지만 현재 내가 한 일입니다.

primefaces가 필터 준비를 준비하는 구조에 액세스하는 방식 때문입니다. ID = 'globalFilter'로 InputText]를 필드와 ID 표시했다 : 나는 '숨겨진'페이지를 생성 할 것을

없음 ...

는 그런 다음 selecOneMenu 하나를 사용하여 (하나 2 개 검색 필드를 만들어 단지 inputText 필드). 그런 다음 해당 형식의 onchange 또는 onkeyup 함수를 사용하여 숨겨진 파일을 jQuery를 사용하여 선택한 값으로 업데이트 한 다음 crpTable 기능을 호출하는 자바 스크립트 함수를 호출합니다. 내 F 내부

<script type="text/javascript"> 

     function doFilter1() 
     { 
      $("#globalFilter").val($("#globalFilter1").val()); 
      widgetVarTableId.filter(); 
     }; 
     function doFilter2() 
     { 
      $("#globalFilter").val($("#globalFilter2").val()); 
      widgetVarTableId.filter(); 
     }; 

</script> 

<style> 
    .myGlobalFilter { 
     display:none;  
    } 

</style> 

: 패싯 이름 = 헤더 내가 그러나 짧은 primefaces .filter를 사용오고 .. 내가 예상대로이 작동

<p:inputText id="globalFilter" styleClass="myGlobalFilter"/> 

<h:outputText value="filter one: "/> 
<h:selectOneMenu id="globalFilter1" onchange="doFilter1();"> 
    <f:selectItems value="#{formBean.filterOptions}" /> 
</h:selectOneMenu> 

<h:outputText value="filter two: "/> 
<p:inputText id="globalFilter2" onkeyup="doFilter2();"> 

이() - 당신이 할 수없는 변화 그것은 '정확한' 'startsWith'등으로, 항상 PF 소스 코드를 수정하지 않고 '포함'합니다.

희망이 도움이됩니다.

+0

불행은 "포함"이지만 훌륭하게 해결해드립니다. –

2

시도 필터링 :

<p:selectOneMenu id="state" value="#{examenListBean.stateOption}"> 
      <f:selectItems value="#{examenListBean.etatExamOptions}"/> 
      <p:ajax event="change" process="@this" listener="#{myBean.filteringMethod}" update=":absPath:tabexam"/> 
</p:selectOneMenu> 

자바 스크립트 방법 어쩌면 <p:remoteCommand> 및 업데이트를 사용하려고처럼 보이는 방법을 알고하지 마십시오 거기 테이블.

+0

실제로 내가 필터링 할 수있는 방법을 찾고 있어요, 또한 내가 서버 측 필터링을위한 작업 방법이 필요합니다, 내가 선택의 여지가 특히 클라이언트 쪽 필터링 큰 덩어리 다루고 있기 때문에 필터링 데이터. –

+0

귀하의 접근 방식은 매우 빠르고 유용합니다. –

+0

당신은 똑같은 행동을 필터링하고 있습니다. – Kuba

관련 문제