Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
bonjour,
voila j'ai une dddw en list_view, je veux ajouter un item à ma dddw (du genre ajouter un compte) je le fais avec un setitem, mais je n'arrive pas a afficher le text "ajouter un compte" en gros j'ai a la fin de ma liste une ligne vide!
Hors ligne
Bonjour Disneb,
Bon j'ai pas PB sous la main mais je pense que de tête j'arriverais à pondre un code qui explicatif.
Pour cela je suppose que tu as ta datawindow dw_1 qui possède le champ_1 de type dropdowndatawindow
La dropdowndatawindow possède le champ champ_child_1
// Déclaration des variables Integer li_code_retour DataWindow ldw_child // Je récupère ma dropdowndatawindow li_code_retour = dw_1.GetChild("champ_1", ldw_child) // Je teste si c'est bien une dropdowndatawindow If (li_code_retour <> 0) Then MessageBox("Erreur", "Champ_1 n'est pas une dropdowndatawindow" return End If // J'ajoute une ligne dans ma datawindowchild (à toi de voir à quel endroit tu veux l'insérer, pour l'exemple je le met en ligne 1) ldw_child.InsertRow(1) // J'édite le contenu de la nouvelle ligne que j'ai rajouté ldw_child.SetItem(1,"champ_child_1", "Ajouter un compte") // /!\ Je ne sais plus si on déclare la ligne avant la colonne
Voilà j'espère ne pas trop avoir répondu a coté de la plaque
Hors ligne
c'est la maniere dont laquelle j'ai procédé
mais je ne sais pas pour quelle raison, au lieu d'avoir une ligne ajouter un compte j'ai une ligne vide, dans laquelle une fois selectionnée il me retourne la valeur "ajouter un compte"
Hors ligne
disneb a écrit:
c'est la maniere dont laquelle j'ai procédé
mais je ne sais pas pour quelle raison, au lieu d'avoir une ligne ajouter un compte j'ai une ligne vide, dans laquelle une fois selectionnée il me retourne la valeur "ajouter un compte"
Dans ce cas c'est surement que tu n'initialise pas la bonne colonne pour l'affichage.
Quand tu déclare un colonne étant de type dropdowndatawindow tu dois renseigner 3 champs :
- La datawindow qui constituera ta dropdowndatawindow
- Le champ qui constituera l'affichage dans cette dropdowndatawindow
- Le champ qui constituera la valeur retourné par cette dropdowndatawindow
Je pense que tu initialise le champ qui constitue la valeur retournée par la dropdowndatawindow à la place de celle réservée à l'affichage.
Dernière modification par Nephtis (16-08-2008 20:21:18)
Hors ligne
voila exactement ce que j'ai mis
datawindowchild lds_compte a=dw_ecriture.getchild('comptes_num_cpt',lds_compte) messagebox("test" ,a) //il me retourne bien la valeur "1" lds_compte.settransobject(sqlca) nb_lign=lds_compte.rowcount() nb_lign++ if (this.getcolumn()=3) then // la colonne de la dddw est bien la 3eme if lds_compte.retrieve()>0 then lds_compte.InsertRow(nb_lign) lds_compte.SetItem(nb_lign,1, "<Ajouter un compte>") end if end if
je ne sais pas où ça cloche...
Dernière modification par disneb (16-08-2008 23:17:56)
Hors ligne
En fait ce qu'il me manque juste à vérifier c'est ce que j'avais précisé au dessus : quelles sont les colonnes de ta dropdowndatawindow qui définissent la colonne 'comptes_num_cpt' de la datawindow 'dw_ecriture'
Ouvre le datawindowobject associé à la datawindow dw_ecriture (clic droit sur ta datawindow dw_ecriture sur ta fenêtre puis Modify datawindow... pour aller plus vite ^^)
Clic droit sur la colonne 'comptes_num_cpt' puis propriétés.
On se place dans l'onglet 'Edit' et tu dois normalement avoir une fenêtre de ce type :
(tiré du cours Power Builder 6 par la pratique)
Les deux colonnes que j'ai encadré en rouge sont celles qui définissent les valeurs d'affichage et de retour pour la dddw.
Je reprends ton code :
datawindowchild lds_compte a=dw_ecriture.getchild('comptes_num_cpt',lds_compte) messagebox("test" ,a) //il me retourne bien la valeur "1" lds_compte.settransobject(sqlca) nb_lign=lds_compte.rowcount() nb_lign++ if (this.getcolumn()=3) then // la colonne de la dddw est bien la 3eme if lds_compte.retrieve()>0 then lds_compte.InsertRow(nb_lign) lds_compte.SetItem(nb_lign,1, -1) // Là tu initialise la colonne qui sert normalement à récupérer la valeur de la ligne. *Voir la petite note après pour une explication supplémentaire lds_compte.SetItem(nb_lign,"ta_colonne_display", "<Ajouter un compte>") // Là tu initialise l'affichage de la colonne end if end if
* : J'imagine que la notion de "compte" est crée comme ceci: un chiffre positif qui identifie le compte avec un libellé attaché par numéro de compte. Ici j'ai initialisé à -1 mais libre à toi de l'initialiser avec n'importe quelle autre valeur
Dernière modification par Nephtis (17-08-2008 12:42:25)
Hors ligne
j'ai bien initialisé ma dddw, pour la colonne display à num_cpt (car j'ai envie qu'une fois cliqué sur un des choix il lui selectionne le num de compte) et pour la data colonne à num_cpt bien sur
maintenant cette dddw contient une datawindow avec une seule colonne dans laquelle j'ai le numero de compte ainsi que le libellé associé (donc dans ma liste view il affiche les num de compte et les libellés associés, et une fois que j'en selectionne un il m'affiche dans ma datawindow control le compte selectionné (juste le compte))
y a surement un truc que j'ai pas du comprendre
Dernière modification par disneb (17-08-2008 13:18:42)
Hors ligne