You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Edney Imme <ed...@gmail.com> on 2007/03/26 21:12:44 UTC

Problems with Sort function

Hello,

I have a big problem with my datatable and the sort function.

I Have this source

  <h:dataTable id="data"
                          styleClass="scrollerTable"
                          headerClass="standardTable_Header"
                          footerClass="standardTable_Header"
                          rowClasses="standardTable_Row1,standardTable_Row2"

columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
                          var="abrufe"
                          value="#{pagedDeliveryScheduleSort.schedules}"
                          preserveDataModel="true"
                          rows="15"
                          sortColumn="#{pagedDeliveryScheduleSort.sort}"
                          sortAscending="#{
pagedDeliveryScheduleSort.ascending}"
                          preserveSort="true">

    <h:column>
                    <f:facet name="header">
                        <t:panelGroup styleClass="standardTable_Column">
                            <t:panelGrid columns="1">
                                <t:commandSortHeader
columnName="articleItemDescription" arrow="true" immediate="false">
                                    <h:outputText id="column3"
value="#{empregos_labels['sort_number_supplier']}" />
                                </t:commandSortHeader>
                            </t:panelGrid>
                        </t:panelGroup>
                    </f:facet>
                    <t:commandLink title="#{abrufe.itemDescription}"
value="#{abrufe.itemDescription}" action="go_schedule_details">
                        <f:param name="itemNumberSupplier" value="#{
abrufe.itemDescription}"/>
                    </t:commandLink>
                </h:column>
</h:dataTable>

There method sort in pagedDeliveryScheduleSort are hier.


protected void sort(final String column, final boolean ascending) {

        Comparator comparator = new Comparator() {
            public int compare(Object o1, Object o2) {
                System.out.println("-------------------------------");
                DeliveryInstructionItem c1 = (DeliveryInstructionItem) o1;
                DeliveryInstructionItem c2 = (DeliveryInstructionItem) o2;
                LOGGER.info("columns  - " + column);
                System.out.println("-------------------------------");
                if (column == null) {
                    return 0;
                }
                if (column.equalsIgnoreCase("articlenumberCustomer")) {
                    return ascending ? c1.getItemNumberBuyer().compareTo(
                            c2.getItemNumberBuyer()) : c2.getItemNumberBuyer
()
                            .compareTo(c1.getItemNumberBuyer());
                } else if (column.equalsIgnoreCase("articlenumberSupplier"))
{
                    return ascending ? c1.getItemNumberSupplier().compareTo(
                            c2.getItemNumberSupplier()) : c2
                            .getItemNumberSupplier().compareTo(
                                    c1.getItemNumberSupplier());
                } else {
                    System.err.println("Unsupported column=" + column);
                    return 0;
                }
            }
        };
        Collections.sort(this.listEntries, comparator);
    }


But, these dont sort my result.

Can anyone help me?

thank you very much

Re: Problems with Sort function

Posted by Edney Imme <ed...@gmail.com>.
Hello,

And this
                <h:column>
                    <f:facet name="header">
                        <t:panelGroup styleClass="standardTable_Column">
                            <t:panelGrid columns="1">
                                <t:commandSortHeader
columnName="articlenumberCustomer" arrow="true" immediate="true">
                                    <h:outputText id="column2"
value="#{curriculo_labels['sort_number_buyer']}" />
                                </t:commandSortHeader>
                            </t:panelGrid>
                        </t:panelGroup>
                    </f:facet>
                    <t:commandLink title="#{abrufe.itemNumberBuyer}"
value="#{abrufe.itemNumberBuyer}" action="go_schedule_details">
                        <f:param name="itemNumberBuyer" value="#{
abrufe.itemNumberBuyer}"/>
                    </t:commandLink>
                </h:column>

Hier I have a a component commandSortHeader with the columnName

Is these not right?


2007/3/26, Simon Kitching <si...@rhe.co.nz>:
>
> Edney Imme wrote:
> > Hello Simon
> >
> > sortAscending = PagedDeliverySchedulesort.ascending  will return true.
> >
> > and by          sortColumn i need do input a string. ?
>
> Yes.
>
> public void setAscending(boolean state) {this.ascending=state;}
> public boolean getAscending() { return ascending;}
>
> public void setSortColumn(String columnName) {
>    this.sortColumn=columnName;
> }
>
> public String getSortColumn() {
>    return columnName;
> }
>
> then the method that is referred to by the datatable "value" attribute
> needs to look at this.ascending and this.columnName and return its data
> in the appropriate order.
>
> Regards,
>
> Simon
>



-- 
Att.
Edney Marcel Imme

Re: Problems with Sort function

Posted by Simon Kitching <si...@rhe.co.nz>.
Edney Imme wrote:
> Hello Simon
> 
> sortAscending = PagedDeliverySchedulesort.ascending  will return true.
> 
> and by          sortColumn i need do input a string. ?

Yes.

public void setAscending(boolean state) {this.ascending=state;}
public boolean getAscending() { return ascending;}

public void setSortColumn(String columnName) {
   this.sortColumn=columnName;
}

public String getSortColumn() {
   return columnName;
}

then the method that is referred to by the datatable "value" attribute 
needs to look at this.ascending and this.columnName and return its data 
in the appropriate order.

Regards,

Simon

Re: Problems with Sort function

Posted by Edney Imme <ed...@gmail.com>.
Hello Simon

sortAscending = PagedDeliverySchedulesort.ascending  will return true.

and by          sortColumn i need do input a string. ?



2007/3/26, Simon Kitching <si...@rhe.co.nz>:
>
> Edney Imme wrote:
> > Hello,
> >
> > I have a big problem with my datatable and the sort function.
>
> You have misunderstood the purpose of the sortColum and sortAscending
> attributes. See the documentation here:
>    http://myfaces.apache.org/tomahawk/tlddoc/index.html
>
>


-- 
Att.
Edney Marcel Imme

Re: Problems with Sort function

Posted by Simon Kitching <si...@rhe.co.nz>.
Edney Imme wrote:
> Hello,
> 
> I have a big problem with my datatable and the sort function.

You have misunderstood the purpose of the sortColum and sortAscending 
attributes. See the documentation here:
   http://myfaces.apache.org/tomahawk/tlddoc/index.html


Re: Problems with Sort function

Posted by Edney Imme <ed...@gmail.com>.
Simon, thank you very much

there problem was in there method getSchudules.

In comment the code :( and forget remove it :)

2007/3/26, Edney Imme <ed...@gmail.com>:
>
> Hello,
>
> I have a big problem with my datatable and the sort function.
>
> I Have this source
>
>   <h:dataTable id="data"
>                           styleClass="scrollerTable"
>                           headerClass="standardTable_Header"
>                           footerClass="standardTable_Header"
>
> rowClasses="standardTable_Row1,standardTable_Row2"
>
> columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
>
>                           var="abrufe"
>                           value="#{pagedDeliveryScheduleSort.schedules}"
>                           preserveDataModel="true"
>                           rows="15"
>                           sortColumn="#{pagedDeliveryScheduleSort.sort}"
>                           sortAscending="#{
> pagedDeliveryScheduleSort.ascending}"
>                           preserveSort="true">
>
>     <h:column>
>                     <f:facet name="header">
>                         <t:panelGroup styleClass="standardTable_Column">
>                             <t:panelGrid columns="1">
>                                 <t:commandSortHeader
> columnName="articleItemDescription" arrow="true" immediate="false">
>                                     <h:outputText id="column3"
> value="#{empregos_labels['sort_number_supplier']}" />
>                                 </t:commandSortHeader>
>                             </t:panelGrid>
>                         </t:panelGroup>
>                     </f:facet>
>                     <t:commandLink title="#{ abrufe.itemDescription}"
> value="#{abrufe.itemDescription}" action="go_schedule_details">
>                         <f:param name="itemNumberSupplier" value="#{
> abrufe.itemDescription }"/>
>                     </t:commandLink>
>                 </h:column>
> </h:dataTable>
>
> There method sort in pagedDeliveryScheduleSort are hier.
>
>
> protected void sort(final String column, final boolean ascending) {
>
>         Comparator comparator = new Comparator() {
>             public int compare(Object o1, Object o2) {
>                 System.out.println("-------------------------------");
>                 DeliveryInstructionItem c1 = (DeliveryInstructionItem) o1;
>
>                 DeliveryInstructionItem c2 = (DeliveryInstructionItem) o2;
>                 LOGGER.info("columns  - " + column);
>                 System.out.println("-------------------------------");
>                 if (column == null) {
>                     return 0;
>                 }
>                 if (column.equalsIgnoreCase("articlenumberCustomer")) {
>                     return ascending ? c1.getItemNumberBuyer().compareTo(
>                             c2.getItemNumberBuyer()) :
> c2.getItemNumberBuyer()
>                             .compareTo(c1.getItemNumberBuyer());
>                 } else if (column.equalsIgnoreCase("articlenumberSupplier")) {
>                     return ascending ? c1.getItemNumberSupplier
> ().compareTo(
>                             c2.getItemNumberSupplier()) : c2
>                             .getItemNumberSupplier().compareTo(
>                                     c1.getItemNumberSupplier());
>                 } else {
>                     System.err.println("Unsupported column=" + column);
>                     return 0;
>                 }
>             }
>         };
>         Collections.sort(this.listEntries, comparator);
>     }
>
>
> But, these dont sort my result.
>
> Can anyone help me?
>
> thank you very much
>



-- 
Att.
Edney Marcel Imme