t:dataScroller在刷新时无法正常工作

时间:2012-09-28 19:02:19

标签: jsf myfaces tomahawk datascroller

我正在使用t:dataScroller从at:dataTable滚动一些数据并且除了一件事情之外它工作正常:每次触发导致刷新屏幕的操作时t:dataScroller的索引设置为1 。

更清楚:当我在第二页(索引== 2)并触发屏幕刷新操作时,刷新后,dataTable的数据仍然来自索引2,但dataScroller显示该页面正在展示的是第一个。

我正在以这种方式使用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.jar myfaces-api-2.0.4.jar

1 个答案:

答案 0 :(得分:3)

用于在提交按钮上将滚动条设置为firstpage set 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,定义其setter getter,如下所示:

private HtmlDataTable iFussData;

Getter和setter

 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;

它的getter和setter

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"/>

它也给出欲望的结果。