Rich: проблема с сортировкой dataTable (ajax) + Rich: элемент управления «следующий» прокрутки данных не проходит страницу 2

Я использую Richfaces 3.3.0, Facelelts 1.1.14 и Seam 2.1.1.

У меня проблема с моим богатым: компонентом 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>

Заранее спасибо!


person Mitchi    schedule 11.01.2010    source источник


Ответы (2)


Удалите атрибут reRender файла dataTable.

Пример использования см. здесь.

Кроме того, rich:dataTable не имеет атрибута selectionMode.

Я бы предложил заставить его работать с минимальным набором атрибутов и тегов (т. е. скопировать и вставить пример), а затем добавить те, которые вам нужны, один за другим, чтобы определить, откуда возникла проблема.

person Bozho    schedule 12.01.2010
comment
Спасибо за ответ. Я удалил атрибут reRender, но он все равно не работает. Обратите внимание: я решил проблему с прокруткой данных, указав атрибут страницы. Согласно документации: страница — это атрибут привязки значения, используемый для определения и сохранения текущего номера страницы. Что касается сортировки, похоже, что она не может правильно повторно отображать компоненты страницы после запроса AJAX. На самом деле я обнаружил, что обновление с помощью F5 после первого запроса, которое, по-видимому, не имеет никакого эффекта, фактически отображает данные таблицы в ожидаемом порядке. Есть предположения? - person Mitchi; 13.01.2010
comment
Я сделал, как вы предложили, также попробовал более новую версию richFaces 3.3.2. но это не решило проблему. Сортировка не перерисовывает данные таблицы до обновления или следующего запроса... - person Mitchi; 14.01.2010

Это в разговорной составляющей, и разговор точно заводится?

person bravocharlie    schedule 21.06.2010