Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
bonsoir,
voila j'ai une datawindow dont l'une des colonnes est une dropdown datawindow (en list view), lorsque je sélectionne une des données dans la liste, et que je tente de récupérer celle ci avec un getItemstring il me retourne une valeur négative qui n'a rien avoir avec la donnée séléctionée
qqn pourrait il m'aider?
Dernière modification par disneb (11-08-2008 23:46:41)
Hors ligne
Quel est le type de données que tu souhaites récupérer? Es-tu bien sûr qu'il s'agit d'une valeur alphanumérique. Si ce n'est pas le cas, le getitemstring ne peut pas marcher.(Pour rappel, la valeur que tu récupères au niveau de ta DDDW est la colonne "Data", pas la colonne "Display").
Hors ligne
le type de données est bien "string"
Hors ligne
Merci Foon je voulais récupérer la donnée séléctionnée dans la list view de ma datawindowdrop, afin qu'on ne puisse selectionner que les données se trouvant dans ma list view, finalement j'ai fait autrement je récupere la donnée de ma datawindow, puis je fais un test!
réglé donc!
Hors ligne
Moi ça m'intéresse bien car je bloque sur le même problème: j'ai deux listes dans ma datawindow et lorsque je sélectionne une valeur dans la première, je voudrais automatiquement sélectionner celle qui correspond dans la seconde.
Pour le moment j'essaie donc de récupérer toutes les colonnes du row sélectionné dans ma première liste. Je vais donc dans mon DW->ItemChanged() event :
IF dwo.name = 'contract_key_set' THEN DataWindowChild dwc_contract_key_set integer li_getchild_ok li_getchild_ok = dw_interop.GetChild("contract_key_set", dwc_contract_key_set) If li_getchild_ok <> -1 Then integer ll_row ll_row = dwc_contract_key_set.GetRow() long ll_contract_id, ll_contract_version ll_contract_id = dwc_contract_key_set.GetItemNumber(row, 'contract_id') ll_contract_version = dwc_contract_key_set.GetItemNumber(row, 'contract_version') messagebox('1', 'data : ' + string(data)) messagebox('2', 'row : ' + string(ll_row)) messagebox('3', 'id : ' + string(ll_contract_id)) messagebox('4', 'version : ' + string(ll_contract_version)) else messagebox('', 'Can~'t get key sets') end if END IF
Dans ma datawindow, la colonne représentée par ma liste est bien de type number (Il s'agit ici de contract_key_set).
Dans ma DropDownDataWindow, les infos que je veux récupérer sont aussi de type number (ici contract_id et contract_version).
Le code précédant m'affiche :
. data : 123 (c'est l'ID du contract_key_set)
. row : 3 (le row sélectionné dans la liste déroulante)
. id : 0
. version : 0
Donc j'ai bien le row sélectionné, mais le GetItemNumber me retourne toujours 0 au lieu de la valeur désirée.
Dans le doute j'ai tenté un GetItemString() :
string ls_contract_id, ls_contract_version ls_contract_id = dwc_contract_key_set.GetItemString(row, 'contract_id') ls_contract_version = dwc_contract_key_set.GetItemString(row, 'contract_version')
Et là j'obtiens bien un crash de Powerbuilder, avec un "type mismatch accessing property..."
_________________________________________________________
Han que je suis bête : j'ai fais appel à "row" au lieu de "ll_row". Ça ne plantait pas puisque "row" est passé en paramètre de l'itemChangedEvent, et indique le row sélectionné sur la datawindow principale, pas sur la datawindowchild qui m'intéresse ;)
Le code qui fonctionne est donc le suivant :
IF dwo.name = 'contract_key_set' THEN DataWindowChild dwc_contract_key_set integer li_getchild_ok li_getchild_ok = dw_interop.GetChild("contract_key_set", dwc_contract_key_set) If li_getchild_ok <> -1 Then integer ll_row ll_row = dwc_contract_key_set.GetRow() long ll_contract_id, ll_contract_version ll_contract_id = dwc_contract_key_set.GetItemNumber(ll_row, 'contract_id') ll_contract_version = dwc_contract_key_set.GetItemNumber(ll_row, 'contract_version') messagebox('1', 'data : ' + string(data)) messagebox('2', 'row : ' + string(ll_row)) messagebox('3', 'id : ' + string(ll_contract_id)) messagebox('4', 'version : ' + string(ll_contract_version)) else messagebox('', 'Can~'t get key sets') end if END IF
Dernière modification par Nyphel (12-08-2008 09:28:08)
Hors ligne
GetItemString sur un number ne marche pas !
Ta row n'est pas toujours à 1 ?
Il faut faire un find de ta row ...
Hors ligne
Heu bha là du coup tout fonctionne bien ;)
Hors ligne