rich:dataTable分页-标记rich:datascroller的已访问页面
问题描述:
是否可以在rich:dataTable的页脚中标记访问过的页码? 如果是这样,究竟如何? 页脚很丰富:datascroller.
Is it possible to mark visited page numbers in the paging footer of rich:dataTable? If so, how exactly? The footer is rich:datascroller.
答
好的,我的解决方案有所不同.我使用jQuery查找生成的页码(是一堆TD),并更改了它们的CSS:
OK, my solution was a bit different. I used jQuery to find the generated page numbers (it's a bunch of TD's) and changed their 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;
}