spheris | #1 Posté le 3/3/2024 à 09:06:21 |
---|
![](http://gambaslinux.fr/file/forum/crevette2.png) | Bonjour, Tout est dans le titre.
Je dispose d'un tableau avec 3 colonnes. (id, nom, adresse), id étant le numéro d'index d'un contact, numéro unique de type integer.
Lorsque je clique sur l'entête de colonne id, toutes les lignes se trient du plus grand au plus petit.
Comment réaliser par défaut ceci dans le code à l'ouverture de la fenêtre ? Merci pour vos réponses.
|
valaquarus | #2 Posté le 3/3/2024 à 10:37:13 |
---|
-- Unus Ex Altera --![](images/avatars/avatar-327.png) | Bonjour Sphéris, ton tableau est il alimenté par une base de données ou non ?Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3 |
valaquarus | #3 Posté le 3/3/2024 à 10:49:15 |
---|
-- Unus Ex Altera --![](images/avatars/avatar-327.png) | Si oui je te propose ceci qui au départ est pour un gridView mais le raisonnement reste le même :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
| PUBLIC SUB GridView1_ColumnClick(Column AS INTEGER) 'tri des colonnes du GridView
DIM Values, ValueSorted AS NEW String[] DIM Nx, iNx AS INTEGER ' Dim ordre As String = "ORDER BY " 'déclarée en Public
IF db.Current.Opened = FALSE THEN db.Current.Open ENDIF
IF triOK THEN 'retour de sélection triEncours = triSQL & triSel & ordre ELSE triEncours = triSQL & ordre ENDIF
SELECT CASE Column 'en fonction de la colonne
CASE 0 IF monTri = "numero" THEN triEnCours = triEnCours & monTri & " DESC" monTri = "" FMain.leTri = "Numéro DESC" ELSE monTri = "numero" triEnCours = triEnCours & monTri & " ASC" FMain.leTri = "Numéro ASC" END IF GridView1.Tooltip = ""
CASE ELSE 'GridView1_ColumnClick(Column As Integer)
GridView1.Tooltip = ("Cliquer au moins deux fois\n" & "sur les entêtes des champs calculés\n" "pour bien les ordonner.") FMain.Mouse = Mouse.Wait FMain.beep
FOR Nx = 0 TO GridView1.Rows.Max Values.Add((GridView1[Nx, GridView1.Columns.Sort].Text)) NEXT
ValueSorted = Values.Copy() ValueSorted.Sort((IIf(GridView1.Columns.Ascending, gb.Ascent, gb.Descent)))
FOR Nx = 0 TO ValueSorted.Max
FOR iNx = 0 TO GridView1.Columns.Max SWAP (GridView1[Nx, iNx].Text), (GridView1[Values.Find((ValueSorted[Nx]), 0, Nx), iNx].Text) NEXT
Values.Clear()
FOR iNx = 0 TO GridView1.Rows.Max Values.Add((GridView1[iNx, GridView1.Columns.Sort].Text)) NEXT
NEXT
GridView1.Refresh() GOTO sortie
END SELECT
FMain.triBase = triEncours
IF triOK THEN triSelOrdre = Mid(triencours, RInStr(triEncours, triSel & ordre & monTri)) ELSE triSelOrdre = Mid(triencours, RInStr(triEncours, ordre & monTri)) ENDIF
'**************************************** Resultat = DB.Current.Exec(FMain.tribase) FMain.clef = FMain.Resultat.Index '**************************************** GridRemplis()
sortie: db.Current.Close() FMain.Mouse = Mouse.Default shade()
END
|
À l'ouverture il suffit de dire :
1
| FMain.triBase = "SELECT * FROM maBase ORDER BY numero ASC"
|
ou ceci unquement si pas de base :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| GridView1_ColumnClick(Column AS INTEGER)
GridView1.Tooltip = ("Cliquer au moins deux fois\n" & "sur les entêtes des champs calculés\n" "pour bien les ordonner.") FMain.Mouse = Mouse.Wait FMain.beep
FOR Nx = 0 TO GridView1.Rows.Max Values.Add((GridView1[Nx, GridView1.Columns.Sort].Text)) NEXT
ValueSorted = Values.Copy() ValueSorted.Sort((IIf(GridView1.Columns.Ascending, gb.Ascent, gb.Descent)))
FOR Nx = 0 TO ValueSorted.Max
FOR iNx = 0 TO GridView1.Columns.Max SWAP (GridView1[Nx, iNx].Text), (GridView1[Values.Find((ValueSorted[Nx]), 0, Nx), iNx].Text) NEXT
Values.Clear()
FOR iNx = 0 TO GridView1.Rows.Max Values.Add((GridView1[iNx, GridView1.Columns.Sort].Text)) NEXT
NEXT
GridView1.Refresh() END
|
Tu changes GridView par ColumnView et ça devrait le faire.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3 |
Patrick | #4 Posté le 3/3/2024 à 16:40:17 |
---|
![]() | Bonjour, Et la propriété Sorted tu l'as essayé ? |
linuxos | #5 Posté le 3/3/2024 à 16:53:23 |
---|
Un peu de sel, de poivre et la crevette sera... ![](images/avatars/avatar-28.png) | Bonjour, En effet, il y a la propriété 'Sorted' qui est déja présenteLorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. |
spheris | #6 Posté le 3/3/2024 à 21:01:16 |
---|
![](http://gambaslinux.fr/file/forum/crevette2.png) | Merci pour vos réponses.
Valaquarus, C'est bien une base de données qui alimente la columnview. la requête sql que tu m'as donnée va faire l'affaire. Mais je pensais qu'une commande dans la ColumnView existait du style :
1
| ColumnView1[0].sorted = TRUE
|
Patrick,LinuxOS Sorted ne prend que la valeur True ou False ou il est possible de trier par ce que l'on veut? |
Patrick | #7 Posté le 4/3/2024 à 14:50:29 |
---|
![]() | Sorted n'a l'aire de fonctionner que sur une colonne, j'ai posé dans la forge les classes pour Editer/Trier/Imprimer. |