4

早上好!

是否可以仅重新渲染rich:dataTable 的 1 个特定行?

我有一个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
}

非常感谢你。

4

1 回答 1

4

是的,有可能 。您必须指定以下内容:

  • 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 );
于 2011-08-29T14:20:42.517 回答