Primefaces AJAX обновление - PullRequest
       8

Primefaces AJAX обновление

5 голосов
/ 28 октября 2011

У меня есть данные с простыми числами,

<p:panel id="resultpanel">
  <p:dataTable id="tbl" var="job" value="#{report.jobModel}"
               paginator="true" rows="#{report.jobModel.pageSize}"
               paginatorPosition="bottom" lazy="true" scrollable="true"
               resizableColumns="true" rendered="#{!empty report.jobModel}"
               emptyMessage="#{messages['common.datatable.emptymessage']}">

    <p:ajax event="filter" listener="#{report.jobModel.onFilter}"
            update="@form" />

    <p:column sortBy="#{job.detail4}" filterBy="#{job.detail4}">
      <f:facet name="header">
        <h:outputText value="#{messages['content.donejobs.ftdi.datatable.fixedfeecolumn.header']}" />
      </f:facet>
      <h:outputText value="#{job.detail4}">
        <f:converter converterId="KurusLiraConverter"></f:converter>
      </h:outputText>
    </p:column>

    <f:facet name="footer">
      <h:outputFormat value="#{messages['content.donejobs.ftdi.datatable.footer']}">
        <f:param value="#{report.jobModel.rowCount}" />
      </h:outputFormat>

      <p:panel layout="block" style="border: 0px; text-align: center;">
        <p:commandLink ajax="false" title="Download Report">
          <p:graphicImage value="/images/excel.png" />
          <p:fileDownload value="#{report.excelFileOfReportTable}" />
        </p:commandLink>
      </p:panel>
    </f:facet>
  </p:dataTable>
</p:panel>

Я хочу обновить часть нижнего колонтитула при фильтрации таблицы.Я попытался обновить нижний колонтитул, поместив все элементы нижнего колонтитула в одну панель, присвоив ему идентификатор, проверив этот идентификатор с помощью firebug и присвоив его в качестве значения атрибуту обновления компонента ajax primefaces.Я также выполнил этот подход, чтобы html outputformat и param компоненты.Но безуспешно, наконец я попытался обновить форму, на этот раз вся таблица была отображена как текстовый файл.Есть ли способ обновить размер таблицы после фильтрации?Кстати, я использую Primefaces 3.0.RC1-SNAPSHOT и тестирую в Firefox 7.0.1.Большое спасибо за ваш интерес и комментарий.

Ответы [ 2 ]

6 голосов
/ 31 мая 2012

Существует открытая проблема для этого здесь , и они предоставляют патч для кода dataTable.Мой обходной путь (он же огромный взлом) не требует прикосновения к исходной кодовой базе, которую я предпочитаю.Я проверил это для событий ниже, но я не вижу, почему это не будет работать для события rowEdit.

<p:remoteCommand name="updateFilters" update="table:totalid"></p:remoteCommand>
<p:dataTable id="tabelaMunicipio" value="#{bean.model}" ...>
<p:ajax event="page" oncomplete="updateFilters()"/>
<p:ajax event="filter" oncomplete="updateFilters()"/>   
<p:ajax event="sort" oncomplete="updateFilters()"/>
<p:column headerText="#{msg['id']}" sortBy="#{id}"> 
   <h:outputText value="#{item.id}"></h:outputText>  
   <f:facet name="footer"> 
      <h:outputText value="#{bean.model.totals['id']}" id="totalid"/> 
   </f:facet> 
</p:column> 
...
</p:dataTable>

Да, я использую ap: remoteCommand (вызывается незавершенным хуком на стороне клиентав p: ajax) для обновления компонентов внутри строки нижнего колонтитула.Это вызывает небольшую задержку обновления нижнего колонтитула по сравнению с самими данными, но я могу с этим смириться.

0 голосов
/ 31 октября 2011

3.0.RC1-SNAPSHOT не является официальным релизом, и, насколько я могу судить, это может означать любое количество ночных сборок после M4 или между M3 и M4.Вам следует обновить (или понизить?) До стабильного выпуска, такого как M3 или M4, и посмотреть, возникают ли у вас те же проблемы.

Также вы можете попробовать update = "@ this", но я не уверен, какой эффектчто бы это не сработало с @ form.

...