Foros del Web » Programación para mayores de 30 ;) » Java »

Ordenar columna en Datatable (Primefaces)

Estas en el tema de Ordenar columna en Datatable (Primefaces) en el foro de Java en Foros del Web. Hola, Tengo una DataTable (Primefaces) y no me funciona la opción de ordenar. Una de las columnas tiene un filtro, y si escribo algo en ...
  #1 (permalink)  
Antiguo 30/09/2011, 02:28
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Ordenar columna en Datatable (Primefaces)

Hola,

Tengo una DataTable (Primefaces) y no me funciona la opción de ordenar.
Una de las columnas tiene un filtro, y si escribo algo en el filtro y luego doy a la flecha de ordenar la columna, funciona, pero no ordena si no se utiliza el filtro.
He visto por internet que este problema es muy común pero ninguna de las soluciones que he leído me ha dado resultado.

OverView.xhtml
Código:
    <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="#{ligatusUtilities.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.java
Código:
    @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);  
     }  
      
    }

Etiquetas: jsf, primefaces
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:54.