尝试在ICEFACES中使用列组对iceDataTable进行排序

时间:2012-12-13 20:01:10

标签: java jsf icefaces

我正在尝试将排序功能添加到 IceDataTable 上的列。我尝试使用ice:commandSortHeader但它不起作用。

这是我的xhtml代码。我们尝试绘制一个表,其中包含两个名为HTRANS和STA的列组,但是包含所有数据的单个数组。它是一种数据比较报告

这是表定义

<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> 

提前感谢您的帮助

1 个答案:

答案 0 :(得分: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方法只是在该方法中调用sort()方法