Saltar al contenido

ordenar columnas en pageblocktable

Solución:

Tendría que suponer que el problema se debe a que los datos aparecen como una cadena real en el algoritmo de clasificación, lo que produce una clasificación lexicográfica (por ejemplo, la clasificación como una cadena). Tiene muchas opciones para elegir si desea introducir una ordenación fácil: AngularJS tiene una directiva orderBy, jQuery tiene un tableSort, módulo que puede agregar (y otros, solo búsquelos), así como la mayoría de los otros marcos JS . Por supuesto, sería bastante fácil implementar su propio comando de clasificación en aproximadamente 20-40 líneas de código, como se describe en StackExchange.

Internet Explorer 7 y 8 pronto perderán su soporte en salesforce.com y, en general, es hora de actualizar, ya que los desarrolladores en su conjunto trabajan hacia estándares compatibles en lugar del pasado fragmentado de detección de navegadores / funciones generado por las guerras de navegadores. Asegúrese de estar probando su código en IE 9 o, mejor aún, IE 10, que ya ha eclipsado las versiones anteriores, en gran parte gracias a las actualizaciones automáticas proporcionadas por Microsoft.

Personalmente, escribiría mi propio algoritmo de clasificación de tablas usando un atributo de datos o un parámetro de función de JavaScript en la columna de encabezado que indicaría a mi función que tratara los valores como texto, números o fechas, y analizaría los valores en cada columna de manera apropiada con algunos expresiones regulares útiles para reducir los números a algo que podría pasar a parseFloat, ordenar el conjunto de datos resultante y luego reordenar las tablas. No creo que esto pese mucho más de 100 líneas de código, como máximo, dados los enlaces que proporcioné anteriormente.

He seguido los pasos de este enlace y pude arreglar la clasificación en mi apex:pageblocktable.

Utiliza el complemento jQuery tablesorter para ordenar la tabla del lado del cliente.

<apex:page standardController="Opportunity" tabStyle="Opportunity" extensions="myext" id="thepage">
    <apex:includeScript value="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"/>
    <apex:includeScript value="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"/>
    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/ui-lightness/jquery-ui.css" type="text/css" media="all" />
    <apex:includeScript value="{!URLFOR($Resource.tablesorter, 'jquery.tablesorter.min.js')}"/>

    <script type="text/javascript">
        $j = jQuery.noConflict();    
        $j(document).ready(function () {
        $j("[id$=theaddrs]").tablesorter();
        });    
    </script>

    <apex:pageBlock id="theaddrsblock">
        <apex:pageBlockTable value="{!Addrs}" var="a" id="theaddrs" styleClass="tablesorter" headerClass="header">
            <apex:column>
                <apex:facet name="header">
                    <apex:outputText styleClass="header" value="{!$ObjectType.Address__c.Fields.Street__c.Label}" />
                </apex:facet>
                <apex:outputText value="{!a.Street__c}" />
            </apex:column>
        <!-- the other columns, closing tags, and that's it -->
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *