1

我有一个带有搜索字段和 commandLink 的数据表进行排序。我用来触发排序的 commandLink 不在列标题中,而是在数据表的标题中。当我加载页面并仅使用 commandLink 进行排序时,一切正常。表格按两个顺序排序,我在页面上看到了结果。当我在 globalFilter 中搜索某些内容时出现问题。它也有效,但在那之后我无法对我的表进行排序。我清除了 globalFilter 的 inputText 并且无法对表进行排序。总而言之,我只有在不使用搜索字段时才能看到排序结果。排序操作有效,但请求不更新数据表。我把我的代码放在下面。也许有人知道如何解决它。

<ui:composition>
    <p:panel header="Moje pomiary" footer="#{msgs.footer}" id="myMeasurement">

        <h:form id="form" prependId="false">
<p:dataTable var="m" value="#{myMeasurementTable.measurement}" id="measureList" editable="true"              
             widgetVar="mTable"   
             emptyMessage="No files found with given criteria" filteredValue="#{myMeasurementTable.filteredMeasurement}" >

<f:facet name="header">  
        Sortowanie według: <p:commandLink id="sortByName" actionListener="#{myMeasurementTable.sortByName}" update="measureList">   
    <h:outputText value="nazwa pliku" />  
</p:commandLink>  
        |<h:commandLink action="#{myMeasurementTable.sortByArchivisationDate}"> data archiwizacji </h:commandLink> 
        |<h:commandLink action="#{myMeasurementTable.sortByMeasureDate}"> data badania </h:commandLink> 
        <p:outputPanel styleClass="searchPanel">  
            <h:outputText value="Szukaj: " />  
            <p:inputText styleClass="globalFilter" id="globalFilter" onkeyup="mTable.filter()" style="width:150px" />  
        </p:outputPanel>  
    </f:facet>  

    <p:column headerText="Informacje pomiarowe" style="width:125px" filterStyle="display:none" filterBy="#{m.fileName} #{m.measureDate} #{m.place} #{m.archivisationDate}"
    filterMatchMode="contains" >
    <p:separator styleClass="separatorColumn"/> 
        Nazwa pliku: <h:outputText value="#{m.fileName}" /><br /> 
                Data badania: <h:outputText value="#{m.measureDate}" /><br /> 
                Data archiwzacji: <h:outputText value="#{m.archivisationDate}" /><br /> 
                Miejscowość: <h:outputText value="#{m.place}"/> <br />
                Współrzędne GPS:           
    </p:column>

    <p:column headerText="Wykresy">  
       <img src="/tmp/21/myfile.xls/myfile.xls_Parametr x.png" width="150"/>  
    </p:column> </p:dataTable></h:form></p:panel></ui:composition>

和我的豆子的一部分

@ManagedBean(name = "myMeasurementTable")
@ViewScoped
public class myMeasurementTable implements Serializable{


    private static final long serialVersionUID = -9193902657201234669L;
    private List<Measurement> measurement;
    private List<Measurement> filteredMeasurement;
    private boolean sortAscending = true;

    public myMeasurementTable() {
        measurement = new ArrayList<Measurement>();
        fillTable(measurement);
    }

    public String sortByName() {
        System.out.println("naciskam sortowanie");
        if (sortAscending) {
            Collections.sort(measurement, new Comparator<Measurement>() {

                @Override
                public int compare(Measurement m1, Measurement m2) {

                    return m1.getFileName().compareTo(m2.getFileName());

                }
            });
            sortAscending = false;
        } else {
            Collections.sort(measurement, new Comparator<Measurement>() {

                @Override
                public int compare(Measurement m1, Measurement m2) {
                    System.out.println(m2.getFileName());
                    return m2.getFileName().compareTo(m1.getFileName());

                }
            });
            sortAscending = true;
        }
        return null;
    }
4

1 回答 1

1

好的,我在 primefaces 论坛上找到了解决方案。这很简单。我只在 commandButton 中添加了 oncomplete="mTable.filter()" ,一切都按我的意愿工作。

于 2012-12-15T13:10:30.757 回答