【问题标题】:is it possible to sort primefaces Datagrid?是否可以对primefaces Datagrid进行排序?
【发布时间】:2012-07-11 09:45:21
【问题描述】:

是否可以对 primefaces 数据网格数据进行排序?我知道在数据表中是可能的。如果默认情况下不可能,还有其他方法吗?谢谢

【问题讨论】:

    标签: sorting datagrid primefaces


    【解决方案1】:

    Primefaces 数据网格不提供排序或过滤功能,而且似乎近期内没有实施它的计划。
    我在DataGrid上方的P:Selectonemenu在DataGrid上方的情况下在DataGrid中实现了排序,如“日期”,“价格(最高第一)”,“价格(最低第一)”等。当所选值更改时,我使用一个 ajax 事件,用于调用使用适当的 ORDER BY 从数据库重新加载集合的方法。

    例子:

    <h:form>
        <h:outputLabel value="Sort by: " />
        <p:selectOneMenu value="#{bean.selectedField}" >
            <f:selectItems value="#{bean.sortingFields}" />
            <p:ajax event="change" update="grid" />
        </p:selectOneMenu>
    
        <p:dataGrid id="grid" value="#{bean.collection}" var="item" >
                <!-- contents of datagrid here -->
        </p:dataGrid>
    </h:form>
    

    在托管 bean 中:

    private List<SelectItem> sortingFieds;
    private String selectedField, currentSortField;
    private boolean asc;
    private List<YourEntity> collection;
    @EJB private YourEJB yourEjb;
    
    public void init() {
        // load sortingFields with list of fields to order by
        // set default value for currentSortField
        asc = true;
        collection = yourEjb.loadCollection(sortField, asc);
    }
    
    public void sortCollection() {
        if(currentSortField.equals(selectedField) {
            asc = !asc;
        } else {
            currentSortField = selectedField;
            asc = true;
        }
        collection = yourEjb.loadCollection(sortField, asc);
    }
    

    在你的 ejb 中

    public List<YourEntity> loadCollection(String sortfield, boolean asc) {
        String q = "SELECT e FROM YourEntity e ORDER BY " + sortfield + " ";
        if(asc) {
           q += "ASC";
         } else {
           q += "DESC";
        }
        Query query = entityManager.createQuery(q);
        return query.getResultList();
    }
    

    【讨论】:

    • @BernadAli 如果这对你来说不够清楚,我可以添加一些代码。
    • 感谢 Damian 的建议。您能举个例子吗?这会很有帮助
    • 非常感谢@Damian,它有帮助。
    猜你喜欢
    • 2010-10-15
    • 2015-09-18
    • 2018-04-20
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2015-07-03
    • 2019-09-26
    相关资源
    最近更新 更多