HOWTO développement Sashipa

 

 ListForm avancé : généralités.

Vous avez un listForm et vous souhaitez modifier son comportement, ajouter une colonne d'une table liée, afficher un agrégat...

 

Modifier l'apparence et le comportement de la liste

Pour ne pas afficher la barre des titres de colonnes, ne pas afficher le nombre de lignes, autoriser ou non les suppressions de lignes, autoriser ou non les ajouts :

  <listForm db='dbContact' doubleClicScreen='SCContactAdresse' 
            delete='no' displayColumnTitles='no' displayRowCount='no'>
    <!-- ... -->
    <insertScreen screen='SCContactAdresse' schemaFk='fk_adr_Contact' />
    <!-- ... -->

Remarques :

  • L'attribut delete indique si les suppressions (par la touche SUPPR) sont autorisées.
  • L'attribut displayColumnTitles spécifie si la barre de titres des colonnes doit être affichée.
  • L'attribut displayRowCount spécifie si le nombre de lignes doit être affichée.
  • L'élément insertScreen est optionnel : il suffit de l'enlever pour faire disparaître le bouton d'ajout.

 

Ajouter une colonne d'une table liée, afficher un agrégat : version simple

Voici un exemple :

  <listForm db='dbContact' doubleClicScreen='SCContact' delete='yes'>
    <bounds x='10' y='90' w='600' h='350' />
    <schemaTableRef schemaTable='tableContact' />
    <instanceColumnList>
      <instanceColumn schemaColumn='cta_ContactNom' />
      <instanceColumn schemaColumn='cta_ContactPrenom' />
      <instanceFkColumns join='inner'>
        <instanceFk schemaFk='fk_cta_Profession' />
      </instanceFkColumns>
      <agregatInstanceColumn schemaFk='fk_adr_Contact' letterCount='4' 
                             sort='desc' type='count'>
        <title>Nb Adr</title>
      </agregatInstanceColumn>
    </instanceColumnList>
    <insertScreen screen='SCContact' schemaFk='fk_cta_Profession' />
  </listForm>
  <!-- ... -->

L'élément instanceFkColumns affiche les colonnes de la clef utilisateur (élément userKey dans l'environnement) de la table référencée.

Note : l'attribut join='inner' signifie que la jointure sera interne. Ceci permet d'optimiser la requête sous-jacente. Mais si la clef étrangère n'est pas obligatoire, il faut utiliser join='left'. Autrement les lignes qui ne référencent pas de valeur dans la table liée (ici Profession) seront ignorées.

L'élément agregatInstanceColumn affiche ici le nombre de lignes de la table ContactAdresse qui référencent le contact. Notez que la jointure dans la requête sous-jacente sera une jointure externe gauche (left join).

 

Attributs des instanceColumns

Les attributs d'une instanceColumn sont facultatifs. Ils prennent comme valeur par défaut, celle définie au niveau de la schemaColumn. Voici une instanceColumn avec tous les attributs de définis :

  <instanceColumn schemaColumn='cta_ContactNom' letterCount='20' sort='asc' order='0' />

Signification des attributs :

  • L'attribut letterCount précise la taille de la colonne en nombre de lettres. Cette taille ne concerne que l'affichage de la colonne. Dans l'export, la donnée est prise à sa taille sans être tronquée. La valeur '-1' signifie que la taille de la colonne n'est pas définie (la taille est différente à chaque ligne, en s'adaptant à la donnée).

  • L'attribut sort spécifie si le tri est ascendant ('asc') ou descendant ('desc').

  • L'attribut order précise le numéro d'ordre dans le tri de la liste. Par défaut, la liste est triée sur les colonnes de gauche à droite. Vous pouvez utiliser les valeurs que vous souhaitez : le tri se fera relativement les order de colonnes par rapport aux autres. Par exemple si trois colonnes ont pour order '50', '54' et '45' respectivement, alors le tri se fera : d'abord colonne 3, puis colonne 1, puis colonne 2. Une exception pour la valeur '-1' qui signifie "par défaut".

 

© Copyright 2003 Sashipa-Melba Team. Ce document de la technologie Sashipa-Melba est sous licence GNU FDL Vous pouvez le copier et modifier librement les copies tant que cette mention apparaît clairement.