повторно визуализировать определенную строку rich:dataTable

Доброе утро!

Можно ли повторно визуализировать только одну конкретную строку rich:dataTable?

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

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
}

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


person ganzux    schedule 29.08.2011    source источник


Ответы (1)


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

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

Атрибут 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 );
person Ken Chan    schedule 29.08.2011
comment
Кен Чан, это работает! Большое Вам спасибо!!!! Только одно: я должен использовать атрибут rowKeyVar из dataTable, чтобы узнать, какая строка выбрана :) --› ‹f:setPropertyActionListener value=#{idx} target =#{myBean.selectedRow} /› Еще раз, СПАСИБО. - person ganzux; 30.08.2011
comment
Привет. Я хочу выполнить только одну строку, отправить на сервер информацию только об одной строке, а не обо всей таблице? - person Fernando Pie; 21.06.2018