2012-12-13 3 views
0

Im IceDataTable의 열에 정렬 기능을 추가하려고합니다. ice : commandSortHeader를 사용하려고했지만 작동하지 않습니다.ICEFACES에서 열 그룹을 사용하여 iceDataTable을 정렬하려고 시도합니다.

여기 내 xhtml 코드입니다. 우리는 HTRANS 및 STA라는 두 개의 Column 그룹을 가진 테이블을 그리려했지만 모든 데이터가 포함 된 단일 배열을 그리려고했습니다. 데이터 비교의 그것의 종류

답변

0
public String sortColumnName; 
public boolean ascending = true; 
public String oldSort; 
public boolean oldAscending = ascending; 
public MyClassName() {             // constructor 
    sortColumnName = serialNo; 
    oldSort = sortColumnName; 
    oldAscending = ascending; 
} 
public String getSortColumnName() { 
    return sortColumnName; 
} 
public void setSortColumnName(String sortColumnName) { 
    this.sortColumnName = sortColumnName; 
} 
public boolean isAscending() { 
    return ascending; 
} 
public void setAscending(boolean ascending) { 
    this.ascending = ascending; 
} 
public String getOldSort() { 
    return oldSort; 
} 
public void setOldSort(String oldSort) { 
    this.oldSort = oldSort; 
} 
public boolean isOldAscending() { 
    return oldAscending; 
} 
public void setOldAscending(boolean oldAscending) { 
    this.oldAscending = oldAscending; 
} 
public boolean isDefaultAscending(String sortColumn) { 
    return false; 
} 
public void sort() {                        // Sort Method for Sorting 
    Comparator<Object> comparator = new Comparator<Object>() { 
     public int compare(Object o1, Object o2) { 
      City c1 = (City) o1;                     // Entity Type Name of Datatable List 
      City c2 = (City) o2; 
      if (sortColumnName == null) { 
       return 0; 
      } 
      if (sortColumnName.equals(serialNo)) { 
       return ascending ? 
         new Integer(c1.getSerialNo()).compareTo(new Integer(c2.getSerialNo())) : 
          new Integer(c2.getSerialNo()).compareTo(new Integer(c1.getSerialNo())); 
      }else if (sortColumnName.equals(code)) { 
       return ascending ? c1.getCityCode().compareTo(c2.getCityCode()) : 
         c2.getCityCode().compareTo(c1.getCityCode()); 
      } else return 0; 
     } 
    }; 
    Collections.sort(listCity, comparator); 
} 
private static final String serialNo = "Sr No.";          // fechaEnvioHtrans ------ name of Colum which u want to sort 
private static final String code = "Code"; 
public static String getSerialno() { 
    return serialNo; 
} 
public static String getCode() { 
    return code; 
} 

당신이 열을 정렬하고 당신의 getter 메소드 마지막됩니다 이러한 방법으로 당신의 도움이 사전에이 테이블 정의입니다

<ice:dataTable styleClass="iceDatTbl" rendered="#{not empty ConciliacionHTRANSMB.listaResultado }" 
           id="archivoProcesadoTable" 
           value="#{ConciliacionHTRANSMB.listaResultado}" 
           sortColumn="#{ConciliacionHTRANSMB.sortColumn}" 
           sortAscending="#{ConciliacionHTRANSMB.sortAscending}"        
           var="item" 
           rows="#{SingletonAppMB.PAGINACION}"> 

        <f:facet name="header"> 

         <!-- This is a first group with the colspan --> 
         <ice:columnGroup> 
          <ice:headerRow> 
           <ice:column colspan="5"> 
            <ice:outputText value="HTRANS"/> 
           </ice:column> 
           <ice:column colspan="5"> 
            <ice:outputText value="STA"/> 
           </ice:column> 
          </ice:headerRow> 

          <ice:headerRow> 
           <!-- HTRANS--> 
           <ice:column> 
            <ice:commandSortHeader arrow="true" columnName="fechaEnvioHtrans" immediate="true" actionListener="#{ConciliacionHTRANSMB.sortListener}"> 
             <ice:outputText value="Date"/> 
             <f:attribute name="columnNameEvent" value="fechaEnvioHtrans" />         
            </ice:commandSortHeader> 
           </ice:column> 
           <ice:column> 

            <ice:commandSortHeader arrow="true" columnName="horaEnvioHtrans" immediate="true" actionListener="#{ConciliacionHTRANSMB.sortListener}"> 
             <ice:outputText value="Time"/> 
             <f:attribute name="columnNameEvent" value="horaEnvioHtrans" />         
            </ice:commandSortHeader> 

           </ice:column> 



           <!-- STA--> 

           <ice:column> 
            <ice:outputText value="Fecha procesado"/> 
           </ice:column> 
           <ice:column> 
            <ice:outputText value="Hora procesado"/> 
           </ice:column> 
           <ice:column> 
            <ice:outputText value="Operador originador"/> 
           </ice:column> 
           <ice:column> 
            <ice:outputText value="Nombre archivo"/> 
           </ice:column> 
           <ice:column> 
            <ice:outputText value="Estado"/> 
           </ice:column> 

          </ice:headerRow> 
         </ice:columnGroup> 
        </f:facet> 

        <!-- HTRANS --> 
        <ice:column> 
         <ice:outputText value="#{item.fechaEnvioHtrans}" /> 
        </ice:column> 
        <ice:column> 
         <ice:outputText value="#{item.horaEnvioHtrans}" /> 
        </ice:column> 
        <ice:column> 
         <ice:outputText value="#{item.operadorOriginadorHtrans}" /> 
        </ice:column> 
        <ice:column> 
         <ice:outputText value="#{item.nombreArchivoHtrans}" /> 
        </ice:column> 
        <ice:column> 
         <ice:outputText value="#{item.resultadoEnvioHtrans}" /> 
        </ice:column> 

        <!-- sta --> 
        <ice:column> 
         <ice:outputText value="#{item.fechaProcesadoSTA}" /> 
        </ice:column> 
        <ice:column> 
         <ice:outputText value="#{item.horaProcesadoSTA}" /> 
        </ice:column> 
        <ice:column> 
         <ice:outputText value="#{item.operadorOriginadorSTA}" /> 
        </ice:column> 
        <ice:column> 
         <ice:outputText value="#{item.nombreArchivoSTA}" /> 
        </ice:column> 
        <ice:column> 
         <ice:outputText value="#{item.estadoArchivoSTA}" /> 
        </ice:column> 

       </ice:dataTable> 

감사를보고 당신의 데이터 테이블 목록은 해당 메서드 내에서 sort() 메서드를 호출하기 만하면

관련 문제