在primefaces上滚动的特定记录数

时间:2013-12-01 12:00:28

标签: jsf-2 primefaces datatable

我有一个启用了实时滚动的primefaces数据表。数据表是单元格可编辑的,具有多个选择,基于列启用过滤。我已将属性scrollRows分配给20.但是因为它有超过50列,所以当我到达滚动结束时,花费更多时间为下一组20条记录加载。是否有任何方式,最初在页面加载我只加载50条记录然后在滚动结束时我加载少量记录说关于5。

我的JSF代码段

<p:dataTable id="workSpaceList" var="data"
        value="#{workSpaceBean.lazylpId}" widgetVar="multiSelection"
        selection="#{workSpaceBean.selectedRows}" editable="true"
        resizableColumns="true" editMode="cell" liveScroll="true"
        tableStyle="table-layout:auto; width:1124px;" scrollable="true"
        scrollWidth="1150" scrollHeight="350" scrollRows="20"
        styleClass="datatable" columnClasses="columnwidth"
        filteredValue="#{workSpaceBean.filteredWorkSpaceItems}">
        <p:column selectionMode="multiple" style="width:13px">
        .
        .
        .53 columns
        .
        .

我已在托管bean中实现了datamodel,这是请求作用域。

datamodel类的代码片段

public class WorkSpaceDataModel extends ListDataModel<WorkSpaceItem> implements SelectableDataModel<WorkSpaceItem>{

public WorkSpaceDataModel()
{

}

public WorkSpaceDataModel(List<WorkSpaceItem>data)
{
    super(data);
}                                                                     


@Override
public WorkSpaceItem getRowData(String rowKey) {

    List<WorkSpaceItem>workSpaceItems=(List<WorkSpaceItem>)getWrappedData();

    for(WorkSpaceItem workSpaceItem : workSpaceItems) {

        if(String.valueOf(workSpaceItem.getLpID()).equals(rowKey))
        {
            return workSpaceItem;

        }

    }

    return null;


}

@Override
public Object getRowKey(WorkSpaceItem workSpaceItem) { 
    return workSpaceItem.getLpID();
}

}

我的客户不希望实施分页:((该表有超过4000条记录),所以我留下的唯一选择是使用实时滚动。但由于超过50列,它会产生问题记录加载次数。请告诉我如何提高性能。 提前谢谢。

0 个答案:

没有答案