0

t:dataScrollerを使用してat:dataTableから一部のデータをスクロールしていますが、1つを除いて正常に機能しています。画面を更新するアクションがトリガーされるたびに、t:dataScrollerのインデックスが1に設定されます。

より明確にするために:私が2番目のページ(インデックス== 2)にいて、画面更新アクションがトリガーされたとき、更新後、dataTableのデータはまだインデックス2からのものですが、dataScrollerは表示されているページが最初の1つ。

私はこのようにdataScrollerを使用しています:

<t:dataScroller for="myDataTable" id="myDataScroller" paginator="true"
    paginatorMaxPages="#{myBean.paginatorMxPgs}" 
    pageCountVar="pgCount" pageIndexVar="#{myBean.curPg}"
    actionListener="#{myBean.pgListener}">

<f:facet name="prv">
    <h:panelGroup rendered="#{myBean.curPg > 1}" />
</f:facet>
<f:facet name="nxt">
    <h:panelGroup rendered="#{myBean.curPg != pgCount}"/>
</f:facet>
</t:dataScroller>

tomahawk20-1.1.11.jarmyfaces-api-2.0.4.jarを使用しています

4

1 に答える 1

3

スクローラーを最初のページに設定するには、送信ボタンに actionlistener を設定します。

<t:commandButton actionListener="#{IFussBean.resetDataScroller}" 
                   action="#{IFussBean.searchLocation}" 
                   image="images/submit-button.png">    
  </t:commandButton>

バインディング:

データ可能である場合

<t:dataTable id="data"
             headerClass=""
             footerClass=""
             rowClasses="text_holder"
             columnClasses="search_img,search_txt"
             var="item"
             value="#{IFussBean.searchVideoList}"
             preserveDataModel="false"
             rows= "6"
             binding="#{IFussBean.iFussData}"
 >

Bean で HtmlDataTable を宣言し、そのセッター getter を以下のように定義します。

private HtmlDataTable iFussData;

ゲッターとセッター

 public HtmlDataTable getiFussData() {
        return iFussData;
    }
    public void setiFussData(HtmlDataTable iFussData) {
        this.iFussData = iFussData;
    }

次に、Bean で ActionListener メソッドを定義します。

public void resetDataScroller(ActionEvent e) {
       if(iFussData!= null) {
           iFussData.setFirst(0);
       }
}

新しい検索を行うと、ページは最初のページに設定されます。

/ * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * *** ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * /<rich:dataGrid>お使いのスクローラーは<t:dataScroller>その後

 <rich:dataGrid 
            id="data"
            var="item" 
            columns="3" 
            elements="6" 
            width="600px"
            value="#{IFussBean.searchVideoList}"
            binding="#{IFussBean.iFussDataGrid}"
    >

Bean で HtmlDataGrid を宣言します。

private HtmlDataGrid iFussDataGrid;

そのゲッターとセッター

public HtmlDataGrid getiFussDataGrid() {
        return iFussDataGrid;
    }



 public void setiFussDataGrid(HtmlDataGrid iFussDataGrid) {
            this.iFussDataGrid = iFussDataGrid;
        }

検索用のコマンド ボタンを押すと呼び出されるアクション リスナーを Bean に定義します。

 public void resetDataScroller(ActionEvent e) {
               if(iFussDataGrid != null) {
                   iFussDataGrid.setFirst(0);
               }
          }

コマンド ボタンで ActionListener を呼び出す

<h:commandButton styleClass="submit-button" actionListener="#{IFussBean.resetDataScroller}" action="#{IFussBean.searchLocation}" image="images/submit-button.png"/>

また、欲望の結果を与えます。

于 2013-01-24T06:48:09.617 に答える