DataTable Sortby does not work

UI Components for JSF
Post Reply
Tram
Posts: 2
Joined: 19 Sep 2011, 11:12

30 Sep 2011, 13:55

I have seen that this happened to many people, but none of the solutions worked for me. So I will show my code to see if somebody has an idea.

I have a DataTable and I want to sort the columns. The Sortby feature does not work. When you click on it, it does nothing. Instead, if you write something in the filter of the first column and then sort, it works.

OverView.xhtml

Code: Select all

    <p:dataTable var="row" value="#{overviewTableBean.overviewTableDataModel}"  
                   id="overviewTable"  
                   paginator="true"  
                   paginatorPosition="bottom"  
                   rows="10"  
                   paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                   rowsPerPageTemplate="5,10,15"  
                   selection="#{overviewTableBean.selectedRows}"  
                   emptyMessage="#{messages['view.campaign.overview.table.empty.rows']}">  
      
         <p:column id="columnNameCampaign" sortBy="#{row.campaignName}"  
                   filterBy="#{row.campaignName}"  
                   headerText="#{messages['view.campaign.overview.table.column.nameCampaign']}"  
                   filterMatchMode="contains">  
      
            <p:commandLink action="#{processCampaignBean.editCampaign(row.campaignId)}" ajax="false">  
               <h:outputText value="#{row.campaignName}"/>  
            </p:commandLink>  
         </p:column>  
      
      
        <p:column id="columnStatus" sortBy="#{row.campaignState}"  
                   headerText="#{messages['view.campaign.overview.table.column.stateCampaign']}">  
            <dms:outputText key="#{utilities.getEnumDisplayString(row.campaignState)}"/>  
         </p:column>  
      
      
         <p:column id="columnAis" sortBy="#{row.totalAis}" headerText="#{messages['view.reporting.ais']}">  
            <dms:formatNumber value="#{row.totalAis}" pattern="#{messages['i18n.format.units.pattern']}"  
                              emptyText="-"/>  
         </p:column>  
      
      </p:dataTable>  

OverviewTableBean

Code: Select all

    @Named  
    @SessionScoped  
    public class OverviewTableBean extends BaseBean implements Serializable  
    {  
      
    private static final long serialVersionUID = -930803734182351917L;  
      
    @Inject  
    private CampaignOverviewTableDao campaignOverviewTableDao;  
      
    @Inject  
    private ChartBean chartBean;  
      
    private OverviewTableDataModel overviewTableDataModel = null;  
      
    private CampaignOverviewTableLine[] selectedRows = null;  
      
    private SelectItem[] campaignStateList = new SelectItem[5];  
      
    public OverviewTableBean()  
    {  
      campaignStateList[0] = new SelectItem("", "All");  
      campaignStateList[1] = new SelectItem(CampaignState.SETUP);  
      campaignStateList[2] = new SelectItem(CampaignState.CLEARED);  
      campaignStateList[3] = new SelectItem(CampaignState.ONLINE);  
      campaignStateList[4] = new SelectItem(CampaignState.OFFLINE);  
    }  
      
    public OverviewTableDataModel getOverviewTableDataModel()  
    {  
      overviewTableDataModel = new OverviewTableDataModel(getRows());  
      return overviewTableDataModel;  
    }  
      
    public void setOverviewTableDataModel(final OverviewTableDataModel aOverviewTableDataModel)  
    {  
      overviewTableDataModel = aOverviewTableDataModel;  
    }  
      
    public SelectItem[] getCampaignStateList()  
    {  
      return campaignStateList;  
    }  
      
    public void setCampaignStateList(final SelectItem[] aCampaignStateList)  
    {  
      campaignStateList = aCampaignStateList;  
    }  
      
    public CampaignOverviewTableLine[] getSelectedRows()  
    {  
      return selectedRows;  
    }  
      
    public void setSelectedRows(final CampaignOverviewTableLine[] aSelectedRows)  
    {  
      selectedRows = aSelectedRows;  
    }  
      
    /** 
     * Returns the table rows. 
     * 
     * @return the table rows. 
     */  
    public List<CampaignOverviewDataLine> getRows()  
    {  
      return campaignOverviewTableDao.getCampaignOverviewDataByFilter(chartBean.getFilterCriteria());  
    }  
      
    /** 
     * Sets the campaign filter 
     */  
    protected void setCampaignsFilter()  
    {  
      if(selectedRows == null)  
      {  
         return;  
      }  
      
      final HashSet<Long> selectedCampaignIds = new HashSet<Long>(3);  
      for(final CampaignOverviewDataLine row : selectedRows)  
      {  
         selectedCampaignIds.add(((CampaignOverviewTableLine)row).getCampaignId());  
      }  
      
      chartBean.getFilterCriteria().setCampaignIdList(selectedCampaignIds);  
     }  
      
    }  

Any help is appreciated.

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 8 guests