rich:dataTable paging - 标记rich:datascroller的访问页面

时间:2011-03-24 16:12:14

标签: jsf richfaces

是否可以在rich:dataTable的页面页脚中标记访问过的页码? 如果是这样,怎么样? 页脚很丰富:datascroller。

3 个答案:

答案 0 :(得分:1)

您可以使用<f:facet name="pages">内的rich:datascroller构面以自己的方式显示各个页面链接。在支持bean记录访问过的页面中,将css类应用于访问过的页面。

请在此处查看示例:http://livedemo.exadel.com/richfaces-demo/richfaces/dataTableScroller.jsf?tab=scrollerfacets(点击查看来源)

答案 1 :(得分:1)

您的意思是显示当前查看页面的页码吗?如果是,您可以使用<rich:datascroller>的{​​{1}}属性来执行此操作,该属性定义当前查看页面的页码。另一方面,pageIndexVar属性定义了pagesVar中的总页数。

请注意,必须在名称为<rich:datascroller>的{​​{1}}内使用这2个属性。此外,请确保<f:facet>包含整个pages。例如:

<rich:datascroller>

您可以参考official documentatio n获取更多信息。

答案 2 :(得分:0)

好的,我的解决方案有点不同。我使用jQuery查找生成的页码(它是一堆TD的)并改变了他们的CSS:

<rich:datascroller id="tableScroller" renderIfSinglePage="false" for="projectPlanCreatetable" pageIndexVar="pageNo"
                    binding="#{ProjectPlanCreateControl.listAction.scroller}" page="#{ProjectPlanCreateControl.scrollerPage}">
                    <a4j:support event="onpagechange" action="#{ProjectPlanCreateControl.pageChanged}" reRender="visitedPages" 
                        oncomplete="markPages();"/>
                </rich:datascroller>

<h:inputHidden id="visitedPages" value="#{ProjectPlanCreateControl.visited}" />

<script type="text/javascript">

function markPages(){
var pages = document.getElementById('mainFrm:projectPlanCreatetable:visitedPages').value;
pagesArr = pages.split(",");

    for (var i=0; i<pagesArr.length; i++){
        jQuery('td.rich-datascr-inact').filter(function() {
          return jQuery(this).text() == pagesArr[i];
        }).css('color','red');
    }
}
</script>

并在bean中:

private Integer scrollerPage;
private Set<Integer> visited = new HashSet<Integer>();

public String pageChanged(){
    visited.add(scrollerPage);
    return "";
}   

public String getVisited() {
    if (visited == null){
        return "";
    }

    String replaced = visited.toString().replace("[", "").replace("]", "").replace(" ", "");
    return replaced;
}

public void setVisited(String visited) {
}

public Integer getScrollerPage() {
    return scrollerPage;
}

public void setScrollerPage(Integer scrollerPage) {
    this.scrollerPage = scrollerPage;
}