Ce widget ajoute une pagination. Il est utilisé en parralèle avec un widgettable

Edit me

Hérite de WidgetBase.

Fonction

Rendu

Utilisation

Ce composant sert à afficher une pagination, généralement sous un widget Table.

Il y a deux façons de gérer la pagination :

  • Côté serveur : La pagination est faite dès la requête en base de données. A chaque changement de page, une nouvelle requête est lancée pour obtenir le contenu de la page suivante. C’est le choix conseillé dans la pluspart des cas.
  • Côté client : La première requête va chercher tous les résultats. A chaque changement de page, il n’y a pas de nouvelle requête. C’est le navigateur de l’utilisateur qui fait le travail. Ce choix est généralement déconseillé parce que la première requête peut être longue en cas de forte volumétrie.

La pagination côté serveur

Le dataquery doit utiliser les attributs begin et range :

  • Le begin doit être égal à 0 sous peine de dysfonctionnement.
  • Le range détermine le nombre de résultat par page.
<dataquery id="universite" table_name="{pj}_universite_data" varset_name="universite" table_alias="u" begin="0" range="10">
  <column_simple field_name="univ_adresse" table_name="u"/>
  <column_simple field_name="univ_nom" table_name="u"/>
  <column_simple field_name="univ_ville" table_name="u"/>
  <column_simple field_name="univ_cp" table_name="u"/>
</dataquery>

Dans le paginator, on se contente alors de cibler le dataquery concerné :

<table id="liste_universite" dataset="universite">
  <columns>
    <column field="univ_nom" mode="r" title="Nom"/>
    <column field="univ_adresse" mode="r" title="Adresse"/>
    <column field="univ_ville" mode="r" title="Ville"/>
    <column field="univ_cp" mode="r" title="Code Postal"/>
  </columns>
</table>

<paginator dataset="universite"/>

La pagination côté client

Le dataquery ne doit pas utiliser les attributs begin et range puisque la requête doit récupérer tous les résultats.

<dataquery id="universite" table_name="{pj}_universite_data" varset_name="universite" table_alias="u">
  <column_simple field_name="univ_adresse" table_name="u"/>
  <column_simple field_name="univ_nom" table_name="u"/>
  <column_simple field_name="univ_ville" table_name="u"/>
  <column_simple field_name="univ_cp" table_name="u"/>
</dataquery>

Dans ce cas, il faut :

  • ajouter les options begin et range dans le widget Table.
  • utiliser l’option widgetTable dans le paginator pour cibler le widget Table par son id.
<table id="liste_universite" dataset="universite">
  <options>
    <option output="html" option_name="begin" value="0"/>
    <option output="html" option_name="range" value="1"/>
  </options>
  <columns>
    <column field="univ_nom" mode="r" title="Nom"/>
    <column field="univ_adresse" mode="r" title="Adresse"/>
    <column field="univ_ville" mode="r" title="Ville"/>
    <column field="univ_cp" mode="r" title="Code Postal"/>
  </columns>
</table>

<paginator dataset="universite">
  <option output="html" option_name="widgetTable" value="liste_universite"/>
</paginator>

Attributs

data_set

Indique quel dataset paginer

  • Version : >=2.15

  • Valeurs possibles : String

<... data_set="{data_set_value}" .../>

Options

Options groupées