Paginación de cuadrícula Angular

    La paginación se utiliza para dividir un gran conjunto de datos en una secuencia de páginas que tienen un contenido similar. Angular paginación de tablas mejora la experiencia del usuario y la interacción con los datos. La paginación de la cuadrícula se puede configurar a través de un componente separado proyectado en el árbol de la cuadrícula mediante la definición de una igx-paginator etiqueta, similar a la adición de una columna. Al igual que en cualquier tabla Angular, la paginación de la cuadrícula admite plantillas para páginas personalizadas.

    Angular Pagination Example

    El siguiente ejemplo representa la paginación de cuadrícula y expone las opciones de uso de items per page y cómo se puede habilitar la paginación. El usuario también puede navegar rápidamente a través de las páginas de la cuadrícula mediante los botones "Ir a la última página" e "Ir a la primera página".

    Agregar un componente igx-paginator controlará si la función está presente; puede habilitarla/deshabilitarla usando un simple *ngIf con una propiedad de alternancia. La entrada perPage controla los registros visibles por página. Actualicemos nuestro Grid para habilitar la paginación:

    <igx-grid #grid [data]="data" [height]="'500px'" [width]="'100%'">
        <igx-paginator [perPage]="10">
        </igx-paginator>
    </igx-grid>
    

    Ejemplo:

    <igx-paginator #paginator [totalRecords]="20">
        <igx-paginator-content>
            <div id="numberPager" style="justify-content: center;">
                <button [disabled]="paginator.isFirstPage" (click)="paginator.previousPage()" igxButton="flat">
                    PREV
                </button>
                <span>
                   Page {{paginator.page}} of {{paginator.totalPages}}
                </span>
                <button [disabled]="paginator.isLastPage" (click)="paginator.nextPage()" igxButton="flat">
                    NEXT
                </button>
            </div>
        </igx-paginator-content>
    </igx-paginator>
    

    Paging with Group By

    Las filas de grupo participan en el proceso de paginación junto con las filas de datos. Cuentan para el tamaño de página de cada página. Las filas contraídas no se incluyen en el proceso de paginación. La integración entre paginación y agrupar por se describe en el tema Agrupar por.

    Usage

    El componente igx-paginator se usa junto con el componente igx-grid en el siguiente ejemplo, pero puede usarlo con cualquier otro componente en caso de que se necesite la funcionalidad de paginación.

    <igx-grid #grid [data]="data">
        <igx-paginator #paginator [(page)]="grid.page" [totalRecords]="grid.totalRecords" [(perPage)]="10"
                [selectOptions]="selectOptions">
        </igx-paginator>
    </igx-grid>
    

    Paginator Component Demo

    Remote Paging

    La paginación remota se puede lograr declarando un servicio responsable de la obtención de datos y un componente que será responsable de la construcción de la red y la suscripción de datos. Para obtener información más detallada, consulte el tema Grid Remote Data Operations.

    Remote Paging with Custom Template

    En algunos casos, es posible que desee definir su propio comportamiento de paginación y aquí es cuando podemos aprovechar el igx-paginator-content y agregar nuestra lógica personalizada junto con él. Esta sección explica cómo vamos a ampliar el ejemplo de paginación remota para demostrar esto.

    Estilismo

    Para comenzar a diseñar el paginador, necesitamos importar el archivo index, donde se encuentran todas las funciones del tema y los mixins de componentes:

    @use "igniteui-angular/theming" as *;
    
    // IMPORTANT: Prior to Ignite UI for Angular version 13 use:
    // @import '~igniteui-angular/lib/core/styles/themes/index';
    

    Siguiendo el enfoque más simple, creamos un nuevo tema que extiende el paginator-theme y acepta los parámetros $text-color, $background-color y $border-color.

    $dark-paginator: paginator-theme(
      $text-color: #d0ab23;,
      $background-color: #231c2c,
      $border-color: #d0ab23;
    );
    

    Como se ha visto, solo controla los paginator-theme colores del contenedor de paginación, pero no afecta a los botones de la interfaz de usuario del paginador. Para dar estilo a esos botones, vamos a crear un nuevo tema de botón de icono:

    $dark-button: icon-button-theme(
      $foreground: #d0ab23,
      $hover-foreground: #231c2c,
      $hover-background: #d0ab23,
      $focus-foreground: #231c2c,
      $focus-background: #d0ab23,
      $disabled-foreground: #9b7829
    );
    
    Note

    En lugar de codificar los valores de color como acabamos de hacer, podemos lograr una mayor flexibilidad en términos de colores mediante el uso de las palette funciones y color. Consulte el Palettes tema para obtener orientación detallada sobre cómo usarlos.

    El último paso es incluir los mixins de componentes, cada uno con su respectiva temática:

    @include css-vars($dark-paginator);
    
    .igx-grid-paginator__pager {
      @include css-vars($dark-button);
    }
    
    Note

    Incluimos el tema.igx-paginator__pager de botón de icono creado, de modo que solo se estilizaría el estilo de los botones del paginador. De lo contrario, otros botones de iconos de la cuadrícula también se verían afectados.

    Note

    Si el componente está usando un Emulated ViewEncapsulation, es necesario que penetrate esta encapsulación use::ng-deep para diseñar los componentes que están dentro del contenedor de paginación, como el botón:

    @include css-vars($dark-paginator);
    
    :host {
      igx-paginator {
        ::ng-deep {
          @include css-vars($dark-button);
        }
      }
    }
    

    Pagination Style Example

    API References

    Additional Resources

    Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.