HOWTO développement Sashipa

 

 Champs simples avec liste de valeurs.

Vous souhaitez remplacer votre textField par une liste de choix.

 

Généralité

Deux champs simples - basés sur une colonne SQL - permettent de proposer des choix à l'utilisateur. Ces choix ne correspondent pas aux valeurs possibles d'une clef étrangère. Ils sont librement définissables au moyen soit d'une requête, soit d'une liste de choix définie "en dur".

Les deux champs simples sont le comboBoxSimpleField et le writeChoiceSimpleField. Ils s'utilisent exactement de la même manière. Voyons un exemple :

  <comboBoxSimpleField onlySuggestedValues='no'>
    <schemaColumnRef schemaColumn='tblBoisson_Producteur' />
    <!-- 
    ... les donnees : une requete ou une liste codee en dur ...
    -->
  </comboBoxSimpleField>

L'attribut onlySuggestedValues définit si l'utilisateur pourra entrer sa propre valeur ou s'il devra choisir un des choix proposés.

Au sujet de la définission des choix, voyons maintenant un exemple de chaque.

 

Avec une requête

Ici nous souhaitons calculer les choix. Cela se fait au moyen d'une selectQueryBuilder. Par exemple, nous pouvons proposer les valeurs qui ont déjà été rentrées dans le champs, sur l'ensemble des lignes de la table SQL.

  <comboBoxSimpleField onlySuggestedValues='no'>
    <schemaColumnRef schemaColumn='tblBoisson_Producteur' />

    <selectQueryBuilder distinctRequired='yes'>
      <castFilterSet filterSensitive='no' />
      <selectStatementBuilder autoPrimaryKey='no'>
        <instanceColumnList>
          <instanceColumn schemaColumn='tblBoisson_Producteur' />
        </instanceColumnList>
      </selectStatementBuilder>
      <fromStatementBuilder>
        <mainInstanceTable schemaTable='tblBoisson' />
      </fromStatementBuilder>
    </selectQueryBuilder>
  </comboBoxSimpleField>

Naturellement, vous pouvez définir la requête SQL que vous souhaitez.

Sur cet exemple, on remarque : la requête est de type 'list' dans ce contexte, elle contient donc par défaut les colonnes de la clefs primaire. On annule ce comportement (autoPrimaryKey='no'). C'est de plus une requête agrégat (distinctRequired='yes') et insensible au filtre de la fiche (filterSensitive='no') sous peine de n'afficher que le choix en cours.

Dans une situation pareille, il est logique de ne pas forcer le choix (onlySuggestedValues='no'). Autrement l'application ne pourrait être utilisée à partir d'une base vide.

 

Avec des choix codés en dur

On les définit de cette manière :

  <comboBoxSimpleField onlySuggestedValues='yes'>
    <schemaColumnRef schemaColumn='tblBoisson_Producteur' />

    <hardcodedRows>
      <internationalValue>Pour</internationalValue>
      <internationalValue>Mes</internationalValue>
      <internationalValue>Utilisateurs :)</internationalValue>
    </hardcodedRows>
  </comboBoxSimpleField>

Et voilà ! Cet exemple proposera trois valeurs à l'utilisateur. A utiliser avec modération : si l'on souhaite modifier ces valeurs, il faur recompiler le programme...

 

© 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.