Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonsoir cher tous,
J'ai un datawindow dw_1 qui a un ensemble de colonne dont une est une DropDownList. Seulement je ne veux pas mettre les différentes valeurs de ce champ statiquement à travers les proprietés des DataWindows. Je voudrai pouvoir remplir cette colonne de Datawindow en récupérant à chaque fois les valeurs depuis une base de données.
Seulement je n'y arrive pas. Est-ce possible de le faire? si oui comment le faire au niveau du code?
Merci et bonne soirée à tous
Dernière modification par legagneur (26-11-2013 09:29:47)
Hors ligne
Bonsoir ,
voilà le minimum à coder pour faire d'une colonne une dddw mais il te faut toujours une datawindow (ls_dddw_name ) définie qui fait le retrieve des données
datawindowchild ldwc_child ma_dw.Modify(ls_col + ".dddw.name='" + ls_dddw_name + "'") ma_dw.Modify(ls_col + ".dddw.displaycolumn='" + ls_displaycolumn_name + "'") ma_dw.Modify(ls_col + ".dddw.datacolumn='" + ls_datacolumn_name + "'") ma_dw.GetChild(ls_col, ldwc_child) ldwc_child.SetTransObject(SQLCA) ldwc_child.Retrieve()
ça réponds à ta question ?
Hors ligne
rincevent a écrit:
ça réponds à ta question ?
Pas sûr : je crois qu'il demande comment remplir dynamiquement une dropdownlist, pas une dropdowndatawindow
Pour remplir dynamiquement une dropdownlist, tu peux appeler en boucle SetValue() :
//exemple avec 2 tableaux labels[] et valeurs[] string labels[], valeurs[], s // ... // [ici on remplit les tableaux] // ... ta_datawindow.ClearValues("column_name") for i = 1 to upperbound(valeurs[]) //chaque info est composée du label et de la valeur //séparés par une tabulation s = labels[i] + '~t' + valeurs[i] ta_datawindow.SetValue("column_name", i, s) next
Hors ligne
Bonjour,
Merci beaucoup mr SEKI mon problème est résolu
Hors ligne
Salut,
legagneur a écrit:
Je voudrai pouvoir remplir cette colonne de Datawindow en récupérant à chaque fois les valeurs depuis une base de données.
Si les données affichées dans la dropDownList sont récupérées d'une base de donnée celà s'appelle une DropDownDatawindow comme le décrit Rincevent.
Cdt
Yanis
Hors ligne
Yanis a écrit:
Si les données affichées dans la dropDownList sont récupérées d'une base de donnée celà s'appelle une DropDownDatawindow comme le décrit Rincevent.
Non.
Une dropdownlist c'est bien un contrôle dans une datawindow qui possède une liste d'items prédéfinis (non basée directement sur une requête). Cette liste peut être remplie "en dur" dans l'éditeur de datawindow, mais rien n'empêche de la remplir dynamiquement (par exemple à l'ouverture de la fenêtre) à partir de données venant d'une requête à la bdd, d'un autre datastore, etc.
Alors qu'une dropdowndatawindow c'est un contrôle qui associe la valeur courante du champ à un élement d'une liste provenant du résultat d'une autre datawindow, qui est basée dans la plupart des cas sur un dataobject et une requête à la base.
Maintenant si tu voulais dire que dans le principe, si les éléments de la dropdownlist proviennent de la base, une dropdowndatawindow est sans doute plus adaptée, je suis d'accord.
À moins que définir une autre datawindow juste pour alimenter la liste ça ne soit trop lourd ?
Hors ligne
Salut
Seki a écrit:
Maintenant si tu voulais dire que dans le principe, si les éléments de la dropdownlist proviennent de la base, une dropdowndatawindow est sans doute plus adaptée, je suis d'accord.
À moins que définir une autre datawindow juste pour alimenter la liste ça ne soit trop lourd ?
Oui c'est tout simplement ce que je voulais dire. Je pense que c'est moins lourd que de faire soit un curseur et d'alimenter la liste ou de générer dynamiquement une datawindow à partir d'un ordre select et d'alimenter la liste ensuite ou tout autre solution.
Si la dropDowndatawindow n'a pas d'argument de lecture tu n'as rien à faire que de créer ta dropdowndatawindow et de l'associer à la colonne. Si celle ci à un argument de lecture il te faut simplement décocher la propriété autoretrieve lorsque tu associe la dropdowndatawindow et d'effectuer le retrieve comme le montre rincevent dans son exemple en lui passant tes arguments.
Cdt
yanis
Hors ligne