我有一个启用了实时滚动的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列,它会产生问题记录加载次数。请告诉我如何提高性能。 提前谢谢。