1

ユーザー名のリストを作成するリッチな extendedDataTable を使用しています。ユーザーが選択すると、選択した値が太字になります。しかし、私の問題は、テーブルがリセットされると、以前に選択した値が太字のままになることです。この問題を解決する方法を知っている人はいますか?

意見 :

<rich:extendedDataTable value="#{reportBean.allActiveUsers}"
        var="user"
        selection="#{reportBean.selection}"
        selectionMode="multiple"
        style="height:175px; width:200px;"
        id="userist">
    <a4j:ajax execute="@this" event="selectionchange" listener="#{reportBean.userSelectionListener}" render="projectList"/>
    <rich:column width="160px">
        <h:outputText value="#{user.name}" />
        <h:inputHidden value="#{user.userId}"/>
    </rich:column>
</rich:extendedDataTable>

<a4j:commandButton id="clearBtn" value="Clear"  tabindex="4">
    <a4j:ajax event="click" execute="@this" listener="#{reportBean.reset}" render="resourceList"/>
 </a4j:commandButton>

コード :

// Loading
List<User> allActiveUsers = new ArrayList<User>();

// Reset
allActiveUsers = new ArrayList<User>();

public void reset(){
    setAllActiveUsers(getUserFacade().getAllUsers());
}
4

3 に答える 3

0

AJAX リクエストの後にクライアントで現在の選択をリセットする方法を見つけ、EDT に「onready」リスナーを追加しました。

onready="var edt = #{rich:component('yourExtendedDataTableId')}; edt.deselectRow(edt.activeIndex);"
于 2015-04-24T15:03:49.787 に答える
0

これに答えるには遅すぎるかもしれません。同じ問題が私を悩ませていました。修正は、a4j ボタンのリスナー/アクションで選択リストをクリアし、a4j ボタンの oncomplete イベントで ActiveRow を null に設定することです (空のテーブル ケースを処理するために tbodies がチェックされます。

oncomplete="(#{rich:component('tableID')}.tbodies)?#rich:component('tableID')}.setActiveRow(null):''"

また、それぞれのアクションで Bean の選択プロパティを null に設定します。

于 2014-03-05T18:50:27.170 に答える