调整primefaces数据表大小,实时滚动屏幕大小

Posted

技术标签:

【中文标题】调整primefaces数据表大小,实时滚动屏幕大小【英文标题】:To adjust primefaces datatable size,live scrolling with screen size 【发布时间】:2013-12-31 19:32:12 【问题描述】:

我有一个带有实时滚动功能的数据表。该表适合我的开发机器,但此应用程序的用户具有更大的屏幕。如果数据表适合屏幕尺寸,那就太好了。此外,数据表的高度应该通过更多的行数进行调整以进行实时滚动。目前我有 15 行用于实时滚动。如果滚动行随着屏幕高度的增加而增加会很好。请在这方面帮助我。

我的数据表代码sn-p:

 <h:form id="form">
   <div id="content">
      <h:selectOneMenu id="workspaceOptions" />
      <f:selectItem id="option1" itemLabel="Assignments"
         itemValue="assignment" />

      </h:selectOneMenu>


      <p:dataTable id="workSpaceList" var="data"
         value="#workSpaceBean.lazylpId" widgetVar="multiSelection"
         selection="#workSpaceBean.selectedRows" resizableColumns="true"
         liveScroll="true" scrollRows="15" scrollWidth="85%"
         scrollHeight="69%" styleClass=".ui-datatable-hor-scroll"
         tableStyle="table-layout:auto;width:100%;" scrollable="true"
         filteredValue="#workSpaceBean.filteredWorkSpaceItems">

         <p:ajax event="rowSelect" listener="#workSpaceBean.onRowSelect"
            update=":editWrkSp:display" oncomplete="multiDialog.show()" />

         <p:column selectionMode="multiple" style="width:5%" />
            .
            .
            .
            <p:column headerText="Insured" filterBy="#data.insuredName"
            sortBy="#data.insuredName" style="width:20%">
            <h:outputText value="#data.insuredName" />
            <!--   style="width:250px" -->
         </p:column>

         <p:column headerText="City" filterBy="#data.custAddress_City"
            sortBy="#data.custAddress_City">
            <h:outputText value="#data.custAddress_City" />
         </p:column>
      </p:dataTable>
   </div>
   </form>

整个页面的CSS

    body 
    margin: 0px 0px 0px 0px;
    font-family: tahoma;
    font-size: 11px;
    background-color: #E8F0F8;
    height: 100%;
    max-height: 100%;
    overflow: hidden;


#header 
    width: 100%;
    height: 90px;
    background-color: #194775;
    position: fixed;


#sidepanel 
    width: 180px;
    height: 100%;
    background-color: #D9E6F3;
    margin-top: 90px;
    position: fixed;
    float: left;
    border-right-style: solid;
    border-width: 0.5px;
    border-color: #4A7EBB;

    /* z-index:1; */


#logo 
    float: left;
    position: absolute;
    left: 5px;


#title 
    position: absolute;
    float: right;
    /* padding-right: 10px;
   padding-bottom:90px; */
    right: 30px;
    top: -25px;
    /* bottom:10px; */


.title1 
    font-family: Agency FB;
    font-size: 32px;
    color: #7F7F7F;
    font-style: bold;
    /* float: right; */
    text-align: left;
    /* padding-right: 10px; */
    font-weight: bold;
    /* padding-bottom:20px; */


.accordionMenu .ui-accordion-header a 
    background: #194775;
    color: white;


.accordionMenu .ui-accordion-content 
    /* color:#254061!important */
    text-decoration: none;
    background-color: #B9CDE5;
    font-weight: bold;
    padding: 5px 5px;


#content 
    position: fixed;
    margin: 90px 0 0 180px;
    width: 100%;
    height: 100%;
    background-color: #E8F0F8;


.label 
    display: block;
    font-weight: bold;
    color: #FFFFFF;
    background-color: #194775;
    width: 170px;
    /* text-align:left; */
    padding: 4px 4px 4px 6px;
    text-decoration: none;
    margin-top: 1px;


.selectMenu 
    /* float:right; */
    margin-left: 20px;
    margin-top: 15px;


.ui-datatable-hor-scroll .ui-datatable-tablewrapper,.scrolling-div .ui-datatable-tablewrapper
    
    overflow: auto;
    width: 100%;
    height: 100% padding-bottom:    5px;


.datatable 
    padding-left: 15px;
    padding-right: 15px;


.calendarStyle 
    width: 250px;


.ui-corner-top 
    display: none;


.ui-chkbox-box ui-widget ui-corner-all ui-state-default 
    /* vertical-align:middle; */
    display: none;

【问题讨论】:

你能给我们你的generetad html而不是你提供的吗?我之所以这么问,是因为我觉得这也可以使用 css 溢出属性来修复,并且需要构建一个具有 HTML 功能的fiddle 以确认这一点。 如果您在 css 部分使用 % 而不是像素,那不会相对于屏幕大小调整文档吗? 如果您想这样做,可以尝试使用 javascript。我想这就是你想要的:w3schools.com/jsref/met_win_resizeto.asp 查看文档。 scrollHeight="69%" 不正确。该属性只接收整数 【参考方案1】:

至少在 PrimeFaces 5.1 中,您可以将滚动高度(和宽度)定义为容器的百分比。

来自文档(重点是我的):

滚动有 3 种模式; x, y 和 x-y 滚动定义为 滚动高度 和 滚动宽度。 这两个滚动属性可以使用表示固定像素或相对于容器尺寸的百分比的整数值来定义。

另请参阅(5.3 文档和来源):

http://www.primefaces.org/docs/guide/primefaces_user_guide_5_3.pdf#165 https://github.com/primefaces/primefaces/blob/5_3/src/main/resources/META-INF/resources/primefaces/datatable/datatable.js#L612

【讨论】:

以上是关于调整primefaces数据表大小,实时滚动屏幕大小的主要内容,如果未能解决你的问题,请参考以下文章

滚动时如何在不同屏幕上调整导航栏的大小

如何调整标签大小以适应任何屏幕尺寸

布局约束将图像大小调整为屏幕宽度保持纵横比

将 XIB 文件自动调整为屏幕大小

调整帧大小后的 UITableView 滚动速度

根据子视图的内容大小调整滚动视图