我正在使用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>
提前致謝!
感謝您的回覆。我刪除了reRender屬性,但它仍然不起作用。 請注意,我通過指定其頁面屬性來解決datascroller問題。根據文檔:「 」頁「是用於定義和保存當前頁碼的值綁定屬性。」 至於排序,它似乎是無法在AJAX請求後重新正確處理頁面組件。事實上,我發現在第一個請求看起來沒有效果之後用F5刷新,實際上按預期的順序顯示錶數據。有什麼想法嗎? – Mitchi 2010-01-13 01:22:10
我按照你的建議做了,也嘗試了較新的3.3.2版本的richFaces。但它沒有解決問題。排序不刷新表格數據,直到刷新或下一個請求... – Mitchi 2010-01-14 17:00:11