2013-07-01 23 views
0

我想添加一個過濾器到JSF中現有的rich:datatable中每列的頭部。我使用Exadel演示來添加過濾器,這很好,但它也從上部標頭中刪除了排序功能。我想保留在上面的標籤頭的排序功能,並在第二個inputText頭過濾。JSF - Richfaces 3.3.3豐富的數據表 - 用兩個頭文件進行排序和過濾?

作爲一個快速和骯髒的例子,這是基本的結構:

<rich:dataTable id="thetable" value="#{stuff.list}" var="s"> 
    <f:facet name="header"> 
     <rich:columnGroup> 
      <rich:column sortBy="#{s.field1}"> 
       <h:outputText="Field 1" /> 
      </rich:column> 
     </rich:columnGroup> 
    </f:facet> 
    <rich:column> 
     <f:facet name="header"> 
      <h:inputText value="#{stuffSorter.field1}"> 
       <a4j:support event="onkeyup" reRender="thetable" ignoreDupResponses="true" 
        requestDelay="700" onComplete"setCaretToEnd(event);" /> 
      </h:inputText> 
     </f:facet> 
    </rich:column> 
</rich:dataTable> 

將會有更多的列,當然,和setCaretToEnd僅僅是一個JavaScript函數,保持插入符號在列的末尾過濾。這幾乎是正確的。我得到兩個標題。最上面的那個是列標籤,下面的是過濾器,結果在下面列出。我已經建立了過濾類,它的工作非常出色。但是,我似乎無法找到一種方法將排序函數返回到最頂端的標題。如果我將「sortBy」字段放在過濾器框旁邊,它確實有效,但我寧願將它放在上面,但似乎插入到過濾器列中的數據正在阻止該字段。

我在這裏丟失了什麼,或者這是不完全可能與一個豐富的:dataTable?我會在名稱+排序方面行得通,然後在同一個頭文件中將過濾器放在彼此的頂部,但是我也沒有運氣。試圖將兩個元素放到構面(outputText和inputText)中時,即使使用s:div單獨包裝它們,也不會顯示outputText。我將使用一個bean進行排序,但奇怪的是,我正在使用的項目使用Richfaces 3.3.3,缺少org.richfaces.component.SortOrder,儘管Richfaces-ui-3.3中有許多其他項目0.3-final.jar。

回答

0

在Richfaces 3.3中,支持標題和過濾器構面。您在標題構面中放置的內容將顯示在頂部。過濾器代碼,您可以將其放置在將出現在標題下方的過濾器面內。請檢查以下問題:Filter Facet is not working in Richface 4.3x,此處顯示舊格式的richfaces 3.3。

<f:facet name="filter"> 
</f:facet> 
相關問題