我正在尝试将排序功能添加到 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>
提前感谢您的帮助
答案 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()方法