|
Accueil → WINDEV 2024 → Afficher le contenu d'un JSON (donc tout type de structure) dans une table hiérarchique |
Afficher le contenu d'un JSON (donc tout type de structure) dans une table hiérarchique |
Débuté par Julien V, 09 oct. 2020 14:34 - 5 réponses |
| |
| | | |
|
| |
Membre enregistré 129 messages Popularité : +20 (20 votes) |
|
Posté le 09 octobre 2020 - 14:34 |
Bonjour,
Ci dessous un petit code pour alimenter une table hiérarchique avec un json.
Soit une table TABLE_JSON avec 3 colonnes - COL_Numero qui reprend le numéro de ligne - COL_JSON qui contient le nom du membre - COL_Valeur qui contient uniquement la valeur du membre
Procedure lproc_initialiser()
JSON est un JSON
JSON = _json
TableSupprimeTout( TABLE_JSON ) TABLE_JSON..AffichageActif = Faux TABLE_JSON.COL_Numero..Couleur = GrisClair
iproc_maj_table_ligne( JSON, "json" ) TableDérouleTout( TABLE_JSON ) TableAjuste( TABLE_JSON ) TABLE_JSON..AffichageActif = Vrai
PROCEDURE INTERNE iproc_maj_table_ligne( LOCAL _membre est un JSON, LOCAL _nom est une chaîne, _iParent est un entier = 0 ) i, j, k, kMax est un entier membre est un JSON SI _iParent = 0 ALORS i = TableAjouteLigne( TABLE_JSON ) SINON i = TableAjouteFils( TABLE_JSON, _iParent ) FIN TABLE_JSON[ i ].COL_Numero = i TABLE_JSON[ i ].COL_JSON =_nom SI TableauOccurrence( _membre..Membre ) > 0 ALORS TABLE_JSON[ i ].COL_Valeur = "<json>" TABLE_JSON[ i ].COL_Valeur..Etat = Grisé TABLE_JSON[ i ]..ImageEnroulée = IMG_json_structure TABLE_JSON[ i ]..ImageDéroulée = IMG_json_structure POUR TOUT m de _membre..Membre SI m..Type = wlVariantTableau ALORS j = TableAjouteFils( TABLE_JSON, i ) TABLE_JSON[ j ].COL_Numero = j TABLE_JSON[ j ].COL_JSON = m..Nom TABLE_JSON[ j ]..ImageEnroulée = IMG_json_tableau TABLE_JSON[ j ]..ImageDéroulée = IMG_json_tableau kMax = m..Occurrence POUR k = 1 À kMax membre = m[ k ] iproc_maj_table_ligne( membre, "[" + k + "]", j ) FIN SINON iproc_maj_table_ligne( m, m..Nom, i ) FIN FIN SINON SI _membre..Type = wlVariantTableau ALORS TABLE_JSON[ i ]..ImageEnroulée = IMG_json_tableau TABLE_JSON[ i ]..ImageDéroulée = IMG_json_tableau kMax = _membre..Occurrence POUR k = 1 À kMax membre = _membre[ k ] iproc_maj_table_ligne( membre, "[" + k + "]", i ) FIN SINON TABLE_JSON[ i ].COL_Valeur = _membre..Valeur TABLE_JSON[ i ]..ImageEnroulée = IMG_json_valeur TABLE_JSON[ i ]..ImageDéroulée = IMG_json_valeur FIN FIN Résultat :
Voili voilou |
| |
| |
| | | |
|
| | |
| |
Posté le 28 septembre 2022 - 13:08 |
Un immense merci pour ces heures de travail épargnées |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 123 messages Popularité : +7 (9 votes) |
|
Posté le 28 septembre 2022 - 14:57 |
| |
| |
| | | |
|
| | |
| |
Posté le 18 novembre 2022 - 17:48 |
Bonjour,
j'ai adapté la méthode pour qu'elle fonctionne avec windev 22 (il n'y a pas encore le type natif JSON dans windev 22) Du coup j'ai utilisé le type "MembreVariant" à la place du type JSON.
_treeview => champs de type table hiérarchique _json => chaine de caractères JSON ou directement une variable de type MembreVariant _IMG_json_structure, _IMG_json_tableau, _IMG_json_valeur => champ image contenant les différents picto, pour customiser votre arborescence.
Procedure loadTreeview(_treeview,_json,_IMG_json_structure="",_IMG_json_tableau="",_IMG_json_valeur="")
JSON est un Variant SI TypeVar(_json)=wlVariant ALORS JSON=_json SINON JSON = JSONVersVariant(ChaîneVersUTF8(_json)) FIN
TableSupprimeTout( _treeview )
_treeview..AffichageActif = Faux _treeview.COL_Numero..Couleur = GrisClair
iproc_maj_table_ligne(_treeview, JSON, "json",0,_IMG_json_structure,_IMG_json_tableau,_IMG_json_valeur)
TableDérouleTout( _treeview ) TableAjuste( _treeview )
_treeview..AffichageActif = Vrai
PROCEDURE INTERNE iproc_maj_table_ligne( _treeview2, LOCAL _membre est un MembreVariant, LOCAL _nom est une chaîne, _iParent est un entier = 0,_IMG_json_structure2="",_IMG_json_tableau2="",_IMG_json_valeur2="" )
i, j, k, kMax est un entier membre est un Variant membre2 est un MembreVariant SI _iParent = 0 ALORS i = TableAjouteLigne( _treeview2 ) SINON i = TableAjouteFils( _treeview2, _iParent ) FIN _treeview2[ i ].COL_Numero = i _treeview2[ i ].COL_JSON =_nom SI TableauOccurrence( _membre..Membre ) > 0 ALORS _treeview2[ i ].COL_Valeur = "<json>" _treeview2[ i ].COL_Valeur..Etat = Grisé _treeview2[ i ]..ImageEnroulée = _IMG_json_structure2 _treeview2[ i ]..ImageDéroulée = _treeview2[ i ]..ImageEnroulée POUR TOUT m de _membre..Membre SI m..Type = wlVariantTableau ALORS j = TableAjouteFils( _treeview2, i ) _treeview2[ j ].COL_Numero = j _treeview2[ j ].COL_JSON = m..Nom kMax = m..Occurrence POUR k = 1 A kMax membre2 = m[ k ] iproc_maj_table_ligne( _treeview2,membre2, "[" + k + "]", j,_IMG_json_structure2,_IMG_json_tableau2,_IMG_json_valeur2 ) FIN SINON iproc_maj_table_ligne(_treeview2, m, m..Nom, i,_IMG_json_structure2,_IMG_json_tableau2,_IMG_json_valeur2 ) FIN FIN SINON SI _membre..Type = wlVariantTableau ALORS _treeview2[ i ]..ImageEnroulée = _IMG_json_tableau2 _treeview2[ i ]..ImageDéroulée = _treeview2[ i ]..ImageEnroulée kMax = _membre..Occurrence POUR k = 1 A kMax membre = _membre[ k ] iproc_maj_table_ligne(_treeview2, membre, "[" + k + "]", i ,_IMG_json_structure2,_IMG_json_tableau2,_IMG_json_valeur2) FIN SINON _treeview2[ i ].COL_Valeur = _membre _treeview2[ i ]..ImageEnroulée =_IMG_json_valeur2 _treeview2[ i ]..ImageDéroulée = _treeview2[ i ]..ImageEnroulée FIN FIN
Cldt, Florent |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 299 messages Popularité : +20 (72 votes) |
|
Posté le 10 février 2023 - 17:18 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 135 messages Popularité : +8 (8 votes) |
|
Posté le 20 avril 2023 - 07:18 |
Bonjour,
Merci pour le partage, simple, rapide, efficace..
-- Dominique DAUSSY http://www.serviceinfo76.com Développeur de votre solution Windev, WebDev et Windev Mobile |
| |
| |
| | | |
|
| | | | |
| | |
|