AddExpandableRow

Bonjour,

Je n’arrive pas à comprendre l’utilisation de l’instruction “AddExpandableRowAt”.

Je voudrais lister des enregistrements à partir d’une Base de données.

Comment faites-vous ?

Pour ajouter des lignes à une liste déroulante, il suffit d’utiliser AddRow.

// Exemple : remplir un ListBox avec les données d’un RowSet
// On suppose que vous avez déjà un RowSet nommé rs (par ex. issu d’une requête SELECT)
// et un ListBox nommé ListBox1 dans votre fenêtre

Var rs As RowSet
Try
  rs = App.DB.SelectSQL("SELECT prénom, nom, ville FROM personnes") // adapter le nom de table si nécessaire
  
  ListBox1.RemoveAllRows // vider les lignes existantes
  ListBox1.ColumnCount = 3
  ListBox1.HeadingAt(0) = "Prénom"
  ListBox1.HeadingAt(1) = "Nom"
  ListBox1.HeadingAt(2) = "Ville"

  // Boucle sur le RowSet
  While Not rs.AfterLastRow
    ListBox1.AddRow(rs.Column("prénom").StringValue, _
                    rs.Column("nom").StringValue, _
                    rs.Column("ville").StringValue)
    rs.MoveToNextRow
  Wend
  
  rs.Close
  
Catch e As DatabaseException
  MessageBox("Erreur base de données : " + e.Message)
End Try

Bonjour,

Cela je sais le concevoir, ce que je voudrais faire c’est regrouper, en prenant votre exemple, les noms qui ont la même ville et en fait, les stocker par ville mais je voudrais qu’il n’y ai que les noms des villes qui soient lister avec un ‘expandableRow’ devant chaque ville.

du genre,

▸ Alençon
▾ Paris
Oviedo Hector Paris
Martin Jean Paris
Sofrut Robert Paris
▾ Metz
Germain Philippe Metz
Arca Fernando Metz
Monti Patrice Metz
▸ Villefranche

Vous voyez un peu ce que je veux afficher

Pas très facile, mais voici comment faire:

Vous avez à demander à votre base de données la liste des villes (1 ville sera retournée par Record, dans un Record unique pour chaque ville)

Puis, .AddExpandableRow / .AddExpandableRowAt dans l’évènement idoine après avoir demandé à la base de données les fiches pour la première ville,

Etc.

sqlite.org pour comment obtenir le nom des villes UNIQUE.

Désolé, je ne me souviens pas de mieux que çà. C’est la vieillesse et les soucis :frowning:

English translated to French:

Ouvrez Xojo et sélectionnez Exemples.
Bureau → Liste → Liste source

Cela pourrait vous être utile.

Allo ?

Y’a quelqu’un ?

Patriiiiick ?

Désolé, je m’occupe de mon épouse et bien entendu de tout le reste, cela me prends pas mal de temps.

J’ai fait pas mal de tentatives sans vraiment comprendre l’instruction.

En fait, j’arrive à mettre l’AddExpandableRow mais c’est après que ça se complique.

J’extrais mes données de la Database mais je n’arrive pas à placer les lignes correspondantes aux AddExpandableRow là ou il faut.

C’est quoi le cheminement ?

Est-ce un Tri de la DB préalable ou une lecture simple ?

Je voudrait arriver à quelque chose qui ressemble à la listbox qui s’affiche quand on ouvre Xojo (folder,sous folder,etc)

As-tu vu RowExpanded dans la documentation ?

C’est dans cet Event que tu ajoutes les lignes qui apparaissent lorsque tu cliques dans la ExpandableRow… Essai avec des textes avant d’y mettre les données venant de la base de données( juste histoire de comprendre comment ça marche). [diviser le problème pour le vaincre !]

N’oublies pas:

image

Cela ne se voit pas bien, mais voici le résultat:

image

La ligne 0 “fermée”

La ligne en gras et les suivantes sont dans mon projet actuel; je m’en suis servi pour vérifier comment ça marche.

Les Events du DesktopListBox (LB): dans Opening, j’ai mis Me.ExpandableRow “Daily Strip” et dans RowExpanded: Me.AddRow “Name:”

Xojo 2025r2.1

macOS Sequoia 15.6.1

oui très bien mais tu as mis Daily Strip en dûr dans ton Opening ?

Moi, au départ, je ne sais pas le nombre AddExpandableRow que je vais avoir, il faut que je les rajoute au fur et mesure de la lecture de la DB et c’est là que ça peche.

Comme tu as pu voir.

J’ai répondu à cette question dans mon premier message: tu dois faire une requête SQL pour cela.

Google dit:

How do you get unique values in SQLite?

In SQLite, the SELECT DISTINCT statement allows us to fetch unique values from one or more columns in a table. We can filter out duplicate rows in a table. In simple words, this statement returns only unique values from the specified column(s).

C’est l’heure du repas…

Je viens de chercher l’exemple suggéré plus haut; il est situé dans Examples → Files → File Browser.xojo_binary_project

Il n’utilise pas de Base de données.