1

我在数据表中使用延迟加载、分页和全局过滤器

在延迟加载函数中,我添加了 2 个函数以支持 2 个场景:

1)当用户在寻呼时

2)当用户在全局过滤器中添加一个值并按“Enter”

基本上我需要知道的是为了决定使用什么功能而执行了哪些活动。

数据表:

     <p:dataTable id="osTable"       
                     var="object"
                     value="#{bean.lazyModel}"
                     selection="#{bean.selectedObjectSet}"
                     selectionMode="single"
                     rowKey="#{object.ID}"
                     paginator="true"
                     paginatorPosition="bottom"
                     paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                     rowsPerPageTemplate="5,10,15"
                     rows="10"
                     widgetVar="objectTable">
            <f:facet name="header"> 
                <p:outputPanel style="float: right"> 
                    <h:outputText value="Search all fields:" /> 
                    <p:inputText id="globalFilter" 
                                 onkeypress="if (event.keyCode == 13) {objectSetTable.filter()}"
                                 style="width:150px"/>
                </p:outputPanel> 
            </f:facet>

加载功能:

  @Override
public List<CfgSe2deMapping> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
    List<Mapping> data = new ArrayList<Mapping>();


    if (// if user press enter ) {
        data.addAll(MappingHelper.getViaFilter(filters.get("globalFilter")));
    } else {
        data.addAll(MappingHelper.getViaOffSet(first + 1, first + pageSize));
    }

我正在使用 primefaces 3.2

谢谢

4

1 回答 1

0

你认为这是错误的方式。无论用户做什么,您都应该始终这样做:检索数据(应用过滤器,如果有)和分页(返回pageSizefirst.

当有过滤器时,为什么不包括“first”和“pageSize”参数?行必须以任何一种方式分页。否则用户将只能看到过滤结果的第一页。

此外,您必须重写 getRowCount 方法,以便您的表格显示正确的页数。

于 2012-08-03T14:40:24.870 回答