PrimeFaces数据表滚动条位置

时间:2012-09-11 08:39:56

标签: jsf-2 primefaces

如何设置从最后到第一个数据表的数据表的滚动条位置?

实际上,我希望从下到上看到这些信息。以下是我的代码:

 <p:dataTable  var="c" value="#{MessagingUserBean.inboxDetails1}" scrollable="true" scrollHeight="517" liveScroll="true" emptyMessage="No Message Found"  scrollRows="8" scrollWidth="815" >

2 个答案:

答案 0 :(得分:1)

您可以尝试不使用liveScroll,因为您不知道dataList的结尾。尝试这个,也许这符合您的需求。这将滚动到dataTable的底部并延迟。

<h:form prependId="false">
          <p:dataTable id="dataTable" var="c" value="#{MessagingUserBean.inboxDetails1}" scrollHeight="517" liveScroll="true" emptyMessage="No Message Found" scrollWidth="815" >

    //Your dataTable stuff
        </p:dataTable>
    </h:form>
    <script>
        //Get the scrollheight
        var s = jQuery('#dataTable .ui-datatable-scrollable-body').prop('scrollHeight');

        //Get total size of datatable
        var o = jQuery('#dataTable .ui-datatable-scrollable-body').prop('offsetHeight');

        //calculate how many times it can scrolldown to set your timer
        var t = Math.ceil(s/o);
        //Excute scrolldown animation (max scrolldown is  scrollHeight - offsetHeight)
        $('#dataTable .ui-datatable-scrollable-body').animate({scrollTop:s-0}, t*1000);     
    </script>

答案 1 :(得分:1)

你需要一些javascript才能做到这一点。

var $scrollable = $(dataTableSelector).children('.ui-datatable-scrollable-body')[0];
$scrollable.scrollTop =  $scrollable.scrollHeight;

其中“dataTableSelector”是primefaces表的一个选择器(例如styleClass)。

当然,这假设您显示的列表中的最后一个元素实际上是您要显示的第一个元素。