rich: dataTable paging - маркировка посещенных страниц rich: datascroller - PullRequest
0 голосов
/ 24 марта 2011

Можно ли отметить номера посещенных страниц в нижнем колонтитуле подкачки rich: dataTable?Если да, то как именно?Футер богат: datascroller.

Ответы [ 3 ]

1 голос
/ 25 марта 2011

Вы хотите отобразить номер страницы для текущей страницы просмотра?Если да, вы можете сделать это, используя атрибут <rich:datascroller> 'pageIndexVar, который определяет номер текущей страницы просмотра.С другой стороны, атрибут pagesVar определяет общее количество страниц в <rich:datascroller>.

Обратите внимание, что эти 2 атрибута должны использоваться внутри <f:facet>, имя которого называется pages.Кроме того, пожалуйста, убедитесь, что все <rich:datascroller> заключено в <h:form>.Например:

     <h:form>      
                   <rich:dataTable id="dt" value="#{test.dataList}" var="row" rows="10">    
                           <rich:column>
                                    <h:outputText value="#{row.col1}" />
                           </rich:column>
                           <rich:column>
                                  <h:outputText value="#{row.col2}" />
                           </rich:column>      
                           <f:facet name="footer">
                                <rich:datascroller pageIndexVar="pageIndex" pagesVar="pages" >
                                    <f:facet name="pages">
                                            <h:outputText value="#{pageIndex} / #{pages}" />
                                    </f:facet>
                              </rich:datascroller>
                        </f:facet>
                    </rich:dataTable>
</h:form>

Вы можете обратиться к официальной документации n для получения дополнительной информации.

1 голос
/ 24 марта 2011

Вы можете использовать фасет <f:facet name="pages"> внутри rich:datascroller для отображения ссылок на отдельные страницы по-своему.В резервном бине запишите посещенные страницы, примените класс css к посещенным страницам.

См. Пример здесь: http://livedemo.exadel.com/richfaces-demo/richfaces/dataTableScroller.jsf?tab=scrollerfacets (нажмите на источник просмотра)

0 голосов
/ 28 марта 2011

ОК, мое решение было немного другим. Я использовал 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>

и в бобе:

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;
}
...