2012-05-02 41 views

回答

0

<ui:param name="title" value="#{msgs[dataTableSorting.title]}"/> 
<ui:param name="description" value="#{msgs[dataTableSorting.description]}"/> 
<ui:param name="resourceValue" value="#{dataTableSorting.exampleResource}"/> 

<ui:param name="wikiResources" value="#{dataTableResources.wikiResources}"/> 
<ui:param name="tldResources" value="#{dataTableResources.tldResources}"/> 

<ui:define name="example"> 
    <h:form id="form"> 
     <ace:dataTable id="carTable" 
         value="#{dataTableSort.carsData}" 
         var="car"> 
      <ace:column id="id" headerText="ID" sortBy="#{car.id}"> 
       <h:outputText id="idCell" value="#{car.id}"/> 
      </ace:column> 
      <ace:column id="name" headerText="Name" sortBy="#{car.name}"> 
       <h:outputText id="nameCell" value="#{car.name}"/> 
      </ace:column> 
      <ace:column id="chassis" headerText="Chassis" sortBy="#{car.chassis}" > 
       <h:outputText id="chassisCell" value="#{car.chassis}"/> 
      </ace:column> 
      <ace:column id="weight" headerText="Weight (lbs)" sortBy="#{car.weight}"> 
       <h:outputText id="weightCell" value="#{car.weight}"/> 
      </ace:column> 
      <ace:column id="accel" headerText="Accel" sortBy="#{car.acceleration}" > 
       <h:outputText id="accelCell" value="#{car.acceleration}"/> 
      </ace:column> 
      <ace:column id="mpg" headerText="MPG" sortBy="#{car.mpg}"> 
       <h:outputText id="mpgCell" value="#{car.mpg}"/> 
      </ace:column> 
      <ace:column id="cost" headerText="Cost" sortBy="#{car.cost}"> 
       <h:outputText id="costCell" value="#{car.cost}"> 
        <f:convertNumber type="currency" 
            currencySymbol="$" 
            groupingUsed="true" 
            minFractionDigits="2" 
            maxFractionDigits="2"/> 
       </h:outputText> 
      </ace:column> 
     </ace:dataTable> 
    </h:form> 
</ui:define> 

参考 - icefaces-showcase

+0

非常感谢这个例子,我需要知道如何将sortby和sorFunction连接到java代码,请给我一个实现java代码的例子这个xhtml代码? (我不明白如何传递sortBy值并在java代码中使用它) – user1059769

2

所以,我的朋友找到了解决办法:

在collectionBean:

private Comparator<String> vNoComparator = new Comparator<String>(){ 

     public int compare(String iRec1, String iRec2){ 
       if(iRec1==null || iRec2==null) 
       { 
        if(iRec1==null && iRec2==null) 
          return 0; 
        if(iRec1==null) 
          return -1; 
        return 1; 
       } 

       long vNumber1= Long.parseLong(iRec1) ; 
       long vNumber2= Long.parseLong(iRec2); 
       if(vNumber1>vNumber2) 
        return 1; 
       else if(vNumber1<vNumber2) 
        return -1; 
       else   
        return 0; 
     } 
    }; 

类型比较的是,我们排序,在这种情况下ARecordNo类型是字符串

public Comparator<String> getvNoComparator() { 
     return vNoComparator; 
    } 
    public void setvNoComparator(Comparator<String> vNoComparator) { 
     this.vNoComparator = vNoComparator; 
    } 

在.xhtml属性的类型:

<ace:dataTable 
    value="#{eITDocumentsCollectionBean.AEITDocumentsItems}" 
    var="eITDocumentsItemBean" ….. 
    <ace:column 
    headerText="#{eITDocumentsCollectionBean.ARecordNumberColumnName}" 
    sortBy="#{eITDocumentsItemBean.ARecordNo}" 
    sortFunction="#{eITDocumentsCollectionBean.vNoComparator}"> 

ARecordNo =在ItemBean属性至按其排序 vNoComparator =我创建的比较器

+0

这不是正确答案?这帮助了我。谢谢 :) – sura2k