Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
bonjour,
j'ai une datawindow de type grid, je veux faire un tri sur une colonne, je fais bien un sort que ce soit dans le menu row ou lors du select, mais ça marche pas il m'affiche lors du retrieve mes données non triées
qqn aurait il une idée?
Hors ligne
Je n'ai jamais utilisé les type GRID, mais ceci fonctionne sur une datawindow 'simple' :
DW.setsort("nom_colonne a")
DW.sort()
Tu peux trier sur plusieurs colonnes en les séparant par des virgules
Tu peux aussi enlever le redraw pendant le calcul du tri (setredraw(false) et setredraw(true))
C'est peut-être pas la solution, mais si ca ne fonctionne ni dans le select ni dans l'interface, il reste le script à essayer ;)
Dernière modification par Nyphel (12-08-2008 10:56:19)
Hors ligne
je viens d'essayer de passer par le powerscript mais ça marche toujours pas
Hors ligne
disneb a écrit:
bonjour,
j'ai une datawindow de type grid, je veux faire un tri sur une colonne, je fais bien un sort que ce soit dans le menu row ou lors du select, mais ça marche pas il m'affiche lors du retrieve mes données non triées
Attention, il y a une différence entre le sort que tu définis en design dans le datawindow painter (dans le menu row), et celui du select (clause ORDER BY).
Et en plus, tu peux définir un sort a l'exécution (dw.setsort() puis dw.sort())
Si tu définis un ORDER BY, je suis sur a 99.999% qu'en faisant un retrieve tu auras tes lignes triées.
Si tu définis un sort en design, idem, un simple retrieve lance le sort embeddé dans ta dw.
Et si tu fais un sort a l'exécution, et que tu n'oublies pas de faire le dw.sort(), c'est pareil.
Si tu es bien d'accord avec moi jusqu'ici, alors c'est d'après moi un effet de bord du a un de tes algorithmes... As tu testé ta datawindow en faisant un retrieve directement en design dans le datawindow painter? La, il n'y aura pas d'interférence et tu vas fatalement voir tes données triées selon ton/tes sort...
Hors ligne
À ma connaissance, le type de présentation en grille ne change pas le comportement des tris. D'où, rien à redire par rapport à l'intervention de Cortex. (Ah si, le 0,001 % d'incertitude doit sans doute couvrir les cas de bugs dans la clause ORDER BY du SGBD )
Par contre, je pense à autre chose : si tu as des colonnes dont le style utilise des DropDownDataWindows ou la propriété "Use Code Table", possible galère. En effet, le tri se fait sur les valeurs des colonnes, et pas sur la valeur affichée à l'utilisateur par l'intermédiaire des DDDW ou tables de code !
Hors ligne
FMolinas a écrit:
Par contre, je pense à autre chose : si tu as des colonnes dont le style utilise des DropDownDataWindows ou la propriété "Use Code Table", possible galère. En effet, le tri se fait sur les valeurs des colonnes, et pas sur la valeur affichée à l'utilisateur par l'intermédiaire des DDDW ou tables de code !
Oula, oui. Bien vu FMolinas!
Et dans ce cas, il faut faire un:
dw_1.setsort('lookupdisplay(nomColonne)')
Comme ca, on trie par valeur visibles...
Hors ligne
FMolinas a écrit:
Par contre, je pense à autre chose : si tu as des colonnes dont le style utilise des DropDownDataWindows ou la propriété "Use Code Table", possible galère. En effet, le tri se fait sur les valeurs des colonnes, et pas sur la valeur affichée à l'utilisateur par l'intermédiaire des DDDW ou tables de code!
j'ai compris, mon prob vient de la, j'attends un tri des valeurs affichées par ma datawindow
Cortex a écrit:
Et dans ce cas, il faut faire un:
Code: pb
dw_1.setsort('lookupdisplay(nomColonne)')
je pense que comme ça ça ira
Hors ligne
Cortex a écrit:
Et dans ce cas, il faut faire un:
Code: pb
dw_1.setsort('lookupdisplay(nomColonne)')
Comme ca, on trie par valeur visibles...
Caramba, ça c'est intéressant ! Dommage que ce ne soit documenté ni dans SetSort()
ni dans lookupdisplay()
, j'étais passé à côté...
Encore une formule miracle pour alléger le code ; je retourne l'amabilité, un grand
Hors ligne