是否可以在rich:dataTable的页面页脚中标记访问过的页码? 如果是这样,怎么样? 页脚很丰富:datascroller。
答案 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;
}