【问题标题】:How to set a row always on top of table when sorting in primefaces?如何在primefaces中排序时始终在表格顶部设置一行?
【发布时间】:2013-10-25 23:56:42
【问题描述】:

我有一个数据表,并且我希望在使用排序时始终在顶部有一个特定的行。 我能做什么?

【问题讨论】:

    标签: java sorting jsf primefaces datatable


    【解决方案1】:

    您需要实现自己的排序功能,如 primefaces 4 指南 pg 中所述。 140

    托管 Bean

    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Locale;
    import javax.annotation.PostConstruct;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ViewScoped;
    import javax.faces.context.FacesContext;
    import org.primefaces.component.datatable.DataTable;
    import org.primefaces.model.SortOrder;
    
    @ManagedBean
    @ViewScoped
    public class AlwaysOnTopBean implements Serializable {
    
        private List<Car> cars;
    
        @PostConstruct
        public void setup() {
            cars = new ArrayList<Car>();
            //I want b to be always on top
            cars.add(new Car("b"));
            cars.add(new Car("a"));
            cars.add(new Car("c"));
        }
    
        public int sort(Object o1, Object o2) {
    
            DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent("mainForm:carTable");
    
            SortOrder sortOrder = SortOrder.valueOf(dataTable.getSortOrder().toUpperCase(Locale.ENGLISH));
            boolean asc = sortOrder.equals(SortOrder.ASCENDING);
    
            String m1 = o1.toString();
            String m2 = o2.toString();
    
            if (m2.equals("b")) {
                return (asc) ? 1 : -1;
            }
    
            return m1.compareToIgnoreCase(m2);
        }
    
        public List<Car> getCars() {
            return cars;
        }
    
    }
    

    查看

    <h:form id="mainForm">
        <p:dataTable id="carTable" value="#{alwaysOnTopBean.cars}" var="car">
            <p:column sortBy="model" headerText="Model" sortFunction="#{alwaysOnTopBean.sort}" >
                #{car.model}
            </p:column>
        </p:dataTable>
    </h:form>
    

    【讨论】:

    • 我找到了,但是我想要一个元素总是在最前面,这个解决方案会让一个元素在顶部,但是下次排序时,它会在列表的底部:(
    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2019-07-18
    • 2014-01-27
    • 2018-07-09
    • 2011-02-26
    • 2014-02-03
    相关资源
    最近更新 更多