2011-08-29 4 views
3

Доброе утро!reRender определенный ряд богатых: dataTable

Возможно ли повторить только 1 конкретный ряд богатых: dataTable?

У меня есть богатый: dataTable и, когда я делаю что-то, что я уверен, что только одна строка изменилась, мне нужно reRednder только эту строку, а не всю таблицу. Является ли это возможным? Как?

XHTML: 

<rich:dataTable id="myTable" value="#{bean.table}" var="me"> 
    <rich:column> 
     <h:outputText value="#{me.id}" /> 
    </rich:column> 
    <rich:column> 
     <h:outputText value="#{me.valueOne}" /> 
    </rich:column> 
    <rich:column> 
     <h:outputText value="#{me.valueTwo}" /> 
    </rich:column> 
</rich:dataTable> 

<some:tag.... reRender="??????" action="bean.example" /> 

Java: 
public void example{ 
    // Do something that affects to the row selected 
} 

СПАСИБО БОЛЬШОЕ.

ответ

3

Да, это возможно. Вы должны указать следующее вещи:

  • Какие столбцы для визуализации с помощью атрибута reRender тегов, которые могут ссылаться на MBean метод
  • Какие строки, чтобы быть оказаны через атрибут rich:dataTableajaxKeys.

Атрибут ajaxKeys привязан к Set <Integer> Объект, который содержит номера строк, подлежащих обновлению.

Например, предположим, что вы хотите вызвать метод Mbean с использованием a4j:commandButton и хотите отобразить определенную строку и столбец после завершения действия. Вы можете использовать следующее:

<a4j:commandButton action="#{bean.someAction}" reRender="columnID,columnID2"> 
    <f:setPropertyActionListener value="#{idx}" target="#{bean.selectedRow}" /> 
</a4j:commandButton> 

<rich:dataTable id="myTable" value="#{bean.table}" var="me" ajaxKeys="#{bean.rowsToUpdate}" rowKeyVar="idx"> 
     <rich:column id="columnID"> 
      <h:outputText value="#{me.id}" /> 
     </rich:column> 
     <rich:column id="columnID2"> 
      <h:outputText value="#{me.valueOne}" /> 
     </rich:column> 
     <rich:column> 
      <h:outputText value="#{me.valueTwo}" /> 
     </rich:column> 
    </rich:dataTable> 

Внутри bean.someAction() вы добавляете номер строки, которые вы хотите обновить до rowsToUpdate целого набора:

HashSet<Integer> rows = new HashSet<Integer>(); 
rows.add(selectedRow); 
setRowsToUpdate(rows); 
+0

** Кен Чан **, это работает! Большое спасибо!!!! Только одно: я должен использовать атрибут ** rowKeyVar ** из ** dataTable **, чтобы узнать, какая строка выбрана :) -> Снова, СПАСИБО. – ganzux

Смежные вопросы