2011-05-30 62 views
0

我需要在<rich:dataTable>的每個列標題中添加複選框。選定的複選框意味着相應的列將包含在從表格數據生成的pdf報告中。其他要求是:列必須是可排序的,我必須能夠混合<rich:column><rich:columns>標籤。如何將複選框添加到JSF/Richfaces中的列標題?

我試圖用幾種不同的方法來完成這個。如果我使用<rich:columnGroup>這樣的:

<rich:dataTable> 
    <f:facet name="header"> 
    <rich:columnGroup> 
     <rich:column sortBy="#{bean.foo}"> 
     <h:outputText value="bar"/> 
     <h:selectBooleanCheckbox value=.../> 
     </rich:column> 
     <rich:columns ...> 
     <h:outputText value="bar"/> 
     <h:selectBooleanCheckbox value=.../> 
     </rich:columns> 
    </rich:columnGroup> 
    </f:facet> 
    <rich:column> 
    <h:outputText value="#{bean.baz}"/> 
    </rich:column> 
    <rich:columns value=... var=...> 
    <h:outputText value="#{bean.foobar}"/> 
    </rich:columns> 
</rich:dataTable> 

則排序圖標不顯示。另外,我已經試過把文本和<h:panelGroup>內的複選框,像這樣的:

<rich:dataTable> 
    <rich:column sortBy="#{bean.foo}"> 
    <f:facet name="header"> 
     <h:panelGroup layout="block"> 
     <h:outputText value="bar"/> 
     <h:selectBooleanCheckbox value=.../> 
     </h:panelGroup> 
    </f:facet> 
    <h:outputText value="#{bean.baz}"/> 
    </rich:column> 
    <rich:columns ...> 
    <f:facet name="header"> 
     <h:panelGroup layout="block"> 
     <h:outputText value="bar"/> 
     <h:selectBooleanCheckbox value=.../> 
     </h:panelGroup> 
    </f:facet> 
    <h:outputText value="#{bean.foobar}"/> 
    </rich:columns> 
</rich:dataTable> 

這樣,一切都顯示,但是當我點擊它觸發列排序的複選框,這不是我想要的。

我在網上搜索了一個答案,但沒有找到完全像我的問題。有沒有人知道更好的方式來做這樣的事情,或者至少如何避免排序當我點擊第二個代碼示例中的複選框?

非常感謝。

回答

0

你有沒有試過用這種標題的:

<rich:columns value="#{bean.columns}" var="#{column}"> 
    <rich:column> 
     <f:facet name="header"> 
      <h:panelGroup> 
       <h:outputText value="#{column.title}" /> 
       <br /> 
       <h:selectBooleanCheckbox value="#{column.selected}" /> 
      </h:panelGroup> 
     </f:facet> 

     <!-- Column data --> 
    </rich:column> 
</rich:columns> 

注意我現在RichFaces的是4.0.0/JSF 2.0,從而豐富:列不存在了,但可以被C代替:的forEach。希望這可以幫助!

Alex。

相關問題