2010-01-11 23 views
1

我正在使用Richfaces 3.3.0,Facelelts 1.1.14和Seam 2.1.1。rich:dataTable排序問題(ajax)+ rich:datascroller'next'控制不通過第2頁

我有一個問題,我的富有:dataTable組件和排序。我注意到了一種模式......第一次點擊列標題上的表格時沒有任何影響,那麼在任何標題上的所有後續點擊實際上都會執行先前請求的順序。我嘗試了很多不同的東西,但我不能指出可能導致這種情況的原因,這很難解決問題。我真的很感謝一些幫助。

包含表我.xhtml文件的部分看起來像這樣:

<rich:contextMenu attached="false" id="menu" submitMode="ajax"> 

     <rich:menuItem ajaxSingle="true" action="#{myAction.openItem}" value="Open Report" > 

      <a4j:actionparam name="uri" assignTo="#{myAction.selectedItem.uri}" value="{uri}"/> 

     </rich:menuItem> 

     <rich:menuItem submitMode="server" action="#{myAction.openItem}" value="Open in new window" target="{uri}" onclick="window.open('', 'jsWinId', 'windth=200, height=200, resizable=0')"> 

      <a4j:actionparam name="uri" assignTo="#{myAction.selectedItem.uri}" value="{uri}"/> 

     </rich:menuItem> 

</rich:contextMenu> 


<rich:dataTable id="myTable" var="_myItem" value="#{myAction.allItems}" selectionMode="single" sortMode="single" width="100%" rows="25" reRender="myForm:myTable,ds" rowClasses="cur" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" rendered="#{not empty myAction.allItems}" > 

     <rich:column id="col1" sortBy="#{_myItem.id}" sortOrder="#{myAction.sortOrder['col1']}" label="Transaction ID" width="15%"> 

      <f:facet name="header"> 

       <h:outputText value="ID"/> 

      </f:facet> 

      #{_myItem.id} 

     </rich:column> 

     <rich:column id="col2" sortBy="#{_myItem.category}" sortOrder="#{myAction.sortOrder['col2']}" label="Category" width="17%"> 

      <f:facet name="header"> 

       <h:outputText value="Category"/> 

      </f:facet> 

      #{_myItem.category} 

     </rich:column> 

<rich:column id="col3" sortBy="#{_myItem.name}" sortOrder="#{myAction.sortOrder['col3']}" label="Name" width="17%"> 

     <f:facet name="header"> 

      <h:outputText value="Name"/> 

     </f:facet> 

     #{_myItem.name} 

</rich:column> 

<rich:column id="col4" sortBy="#{_myItem.location}" sortOrder="#{myAction.sortOrder['col4']}" label="Location" width="21%"> 

     <f:facet name="header"> 

      <h:outputText value="Location"/> 

     </f:facet> 

     #{_myItem.location} 

</rich:column> 

<rich:column id="col5" sortBy="#{_myItem.status}" sortOrder="#{myAction.sortOrder['col5']}" label="Status" width="15%"> 

     <f:facet name="header"> 

      <h:outputText value="Status"/> 

     </f:facet> 

     #{myAction.statusDescription(_myItem.status)} 

</rich:column> 

<rich:column id="col6" sortBy="#{_myItem.timestamp}" sortOrder="#{myAction.sortOrder['col6']}" label="Timestamp" width="15%"> 

     <f:facet name="header"> 

      <h:outputText value="Timestamp"/> 

     </f:facet> 

     <h:outputText value="#{_myItem.timestamp}"><s:convertDateTime type="both" pattern="yyyy-MM-dd HH:mm:ss.ss"/></h:outputText> 

</rich:column> 



<f:facet name="footer"> 

     <rich:datascroller for="myTable" id="ds" renderIfSinglePage="false" ajaxSingle="false"></rich:datascroller> 

</f:facet> 



<rich:componentControl event="onRowClick" for="menu" operation="show"> 

     <f:param name="uri" value="#{_myItem.uri}"/> 

</rich:componentControl> 

提前致謝!

回答

1

刪除dataTablereRender屬性。

有關使用示例,請參閱here

另外,rich:dataTable沒有selectionMode屬性。

我建議使用最少的一組屬性和標籤(即複製粘貼示例),然後逐個添加所需的屬性來標識問題來自哪裏。

+1

感謝您的回覆。我刪除了reRender屬性,但它仍然不起作用。 請注意,我通過指定其頁面屬性來解決datascroller問題。根據文檔:「 」頁「是用於定義和保存當前頁碼的值綁定屬性。」 至於排序,它似乎是無法在AJAX請求後重新正確處理頁面組件。事實上,我發現在第一個請求看起來沒有效果之後用F5刷新,實際上按預期的順序顯示錶數據。有什麼想法嗎? – Mitchi 2010-01-13 01:22:10

+0

我按照你的建議做了,也嘗試了較新的3.3.2版本的richFaces。但它沒有解決問題。排序不刷新表格數據,直到刷新或下一個請求... – Mitchi 2010-01-14 17:00:11

0

這是在一個會話組件中,並且對話是肯定開始的嗎?