Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : [asp.net]creation de relation parent enfant dans un treeview- [ Archives Visual Basic / ASP (Active Server Pages) ] (harbonne)

jeudi 26 mai 2005 à 12:34:56 | [asp.net]creation de relation parent enfant dans un treeview-

harbonne



curieuse_asp


Bonjour,

Mon problème est le suivant:

j'aic reé un treeview avec un premier niveau 'parent' et un deuxième niveau 'enfant'.

or il se troiuve qu'avec le code implémenté je vois bien les deux niveaux mais pas la coprresppondance entre chaque terme parent et son terme enfant
ex : je vois les deux niveaux

monohierarchie
espace vert
fraude fiscale
                          thesaurus
                           foret
                            affaire correctionnelle
alors que je voudrais voir ceci en cliquant respectivement sur les libelles : monohierarchie, espace vert et fraude fiscale

monohierarchie
                            thesaurus
esapce vert
                         forêt

fraude fiscale
                            affaire correctionnelle
Je vous informe que les deux tables selectionnées sont la table TERME dont la strucuture est la suivante
ID_TERME, Lib_TERME

La table ASSOCIES dont la strucuture est la suivante
ID_TERME_SOURCE_A, ID_TERME_ASSOCIE
Voici comment cela  se passe :

Dans la table ASSOCIEs les deux champs ID_TERME_SOURCE_A et ID_TERME_ASSOCIE contiennent des nombres .Ces deux champs sont liés par une relation d'association : ID_TERME_ASSOCIE est l'associé du  ID_TERME_SOURCE du m^me enregistrement.
Les nombres contenus dans ID_TERME_SOURCE_A et ID_TERME_ASSOCIE sont tous des ID_TERME de la table TERME.

Pour connaitre le libellé de chaque ID_TERME_SOURCE_A , ou de chaque ID_TERME_ASSOCIE on fait le lien avec l'ID_TERME de la table TERME et on va chercher le Lib_TERME correspondant.

J'espère que la situation est plus claire à présent

Voici le code implémenté.
Pouuriez vous m'aider à résoudre mon problème car je tourne en rond depuis plusieurs jours maintenant et je finis par me fatiguer!! Embarassed

Code:


Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.Web.UI.WebControls
Imports System.Windows.Forms.TreeNode



Public Class TreeView2
    Inherits System.Web.UI.Page
    Protected WithEvents TreeView2 As Microsoft.Web.UI.WebControls.TreeView
    Protected WithEvents label1_affiche_associé As System.Web.UI.WebControls.Label
    Protected WithEvents Label2_affiche_associé As System.Web.UI.WebControls.Label


    Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sConnString As String = "Data Source = localhost ; Initial Catalog =THESAURUS ; User Id =""; Password=""; integrated security = SSPI"
        Dim objConn As New SqlConnection(sConnString)
        objConn.Open()
        Dim objDS As New DataSet()
        Dim dt1 As DataTable
        Dim dt2 As DataTable
        Dim dt3 As DataTable
        Dim i As Integer
        Dim sbuffer1 As String
        Dim sbuffer2 As String

        'creation(d) 'un Adapter qui se charge des communications entre le Dataset et la source de données 
               
        'autre DataAdapter qui va prendre les enfants de dette racine

        Dim da1 As New SqlDataAdapter("SELECT T1.Lib_TERME FROM TERME T1, ASSOCIES WHERE T1.ID_TERME=ASSOCIES.ID_TERME_SOURCE_A", objConn)
        da2.Fill(objDS, "ASSOCIES_SOURCE")
        dt2 = objDS.Tables("ASSOCIES_SOURCE")

        Dim da2 As New SqlDataAdapter("SELECT T2.Lib_TERME FROM TERME T1, TERME T2, ASSOCIES WHERE(T1.ID_TERME = ASSOCIES.ID_TERME_SOURCE_A)and T2.ID_TERME =ASSOCIES.ID_TERME_ASSOCIE", objConn)
        'je fais un fill avec un nom de table enfant
        da3.Fill(objDS, "ASSOCIES")
        dt3 = objDS.Tables("ASSOCIES")

       
       

        objConn.Close()

        'création des types de données du tree view
        Dim nodeTERME As TreeNode
        Dim rowTERME As DataRow
        Dim nodeTERME1 As TreeNode
        Dim rowTERME1 As DataRow

        Dim ChildRow As DataRow

        ChildRow = objDS.Tables(1).Rows(0)
       


        For Each rowTERME In objDS.Tables(0).Rows
            nodeTERME = New TreeNode()
            nodeTERME.Text = rowTERME("Lib_TERME")
            TreeView2.Nodes.Add(nodeTERME)

        Next

        For Each ChildRow In objDS.Tables(1).Rows
            nodeTERME1 = ChildRow("Lib_TERME")
            nodeTERME.Nodes.Add(nodeTERME1)

        Next ChildRow

       


           End Sub

   
End Class

[/code]


Merci beaucoup de votre aide encore.

Bien cordialement.
Nathalie




jeudi 26 mai 2005 à 13:34:41 | Re : [asp.net]creation de relation parent enfant dans un treeview-

drahcir

Salut,

A la fin de ta première boucle "for each" , ton nodeTERME est égal au dernier noeud parent.

Donc quand tu ajoutes les fils à nodeTERME, tu les ajoutes tous au dernier noeud parent. Il faut que tu ajoutes les noeuds fils aux noeuds parents correspondants.

jeudi 26 mai 2005 à 14:41:13 | Re : [asp.net]creation de relation parent enfant dans un treeview-

harbonne



curieuse_asp

Merci de m'en informer : JUSTEMENT C'EST MON PROBLEME!!!

Ce que j'aimerais c'est avoir une réponse à ce problème!!!

Merci de bien vouloir m'aider dans ce sens!

Cordialement


jeudi 26 mai 2005 à 14:56:23 | Re : [asp.net]creation de relation parent enfant dans un treeview-

drahcir

Je n'ai pas bien compris le lien entre tes noeuds parents et leurs fils. Qu'est ce qui te permet de savoir si  un noeud possède un fils?
Sinon dans ta première boucle :
For Each...
...
TreeView2.Nodes.Add(nodeTERME)
si nodeTERME a un fils
   nodeTERME.add(sonFils)
Next

Sais pas si ça répond mieux (désolé sinon)
@+

jeudi 26 mai 2005 à 16:27:11 | Re : [asp.net]creation de relation parent enfant dans un treeview-

harbonne

Bonjour et merci de ta réponse.
Je te communique le code exact implémenté car dans celui transmis dans mon dernier message il y a des erreurs

[code]


Imports System.Data

Imports System.Data.SqlClient

Imports Microsoft.Web.UI.WebControls

Imports System.Windows.Forms.TreeNode

Public Class TreeView2

Inherits System.Web.UI.Page

Protected WithEvents TreeView2 As Microsoft.Web.UI.WebControls.TreeView

Protected WithEvents label1_affiche_associé As System.Web.UI.WebControls.Label

Protected WithEvents Label2_affiche_associé As System.Web.UI.WebControls.Label

Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim sConnString As String = "Data Source = localhost ; Initial Catalog =THESAURUS ; User Id =""; Password=""; integrated security = SSPI"

Dim objConn As New SqlConnection(sConnString)

objConn.Open()

Dim objDS As New DataSet()

Dim dt1 As DataTable

Dim dt2 As DataTable

Dim dt3 As DataTable

Dim i As Integer

Dim sbuffer1 As String

Dim sbuffer2 As String

Création d'un adapter qui se charge de la communication entre le data set et la source de données

Dim da1 As New SqlDataAdapter("SELECT T1.Lib_TERME FROM TERME T1, ASSOCIES WHERE T1.ID_TERME=ASSOCIES.ID_TERME_SOURCE_A", objConn)

da1.Fill(objDS, "ASSOCIES_SOURCE")

dt1 = objDS.Tables("ASSOCIES_SOURCE")


'creation d'un autre DataAdapter qui va prendre les enfants de dette racine

Dim da2 As New SqlDataAdapter("SELECT T2.Lib_TERME FROM TERME T1, TERME T2, ASSOCIES WHERE T1.ID_TERME = ASSOCIES.ID_TERME_SOURCE_A and T2.ID_TERME =ASSOCIES.ID_TERME_ASSOCIE", objConn)

'je fais un fill avec un nom de table enfant

da2.Fill(objDS, "ASSOCIES")

dt2 = objDS.Tables("ASSOCIES")

objConn.Close()

'création des types de données du tree view

Dim nodeTERME As TreeNode

Dim rowTERME As DataRow

Dim nodeTERME1 As TreeNode

Dim rowTERME1 As DataRow

For Each rowTERME In objDS.Tables(0).Rows

nodeTERME = New TreeNode()

nodeTERME.Text = rowTERME("Lib_TERME")

TreeView2.Nodes.Add(nodeTERME)

Next

For Each rowTERME1 In objDS.Tables(1).Rows

nodeTERME1 = New TreeNode()

nodeTERME1.Text = rowTERME1("Lib_TERME")

nodeTERME.Nodes.Add(nodeTERME1)

Next

End Sub

End Class



Tu me poses la question suivante

'Qu'est ce qui te permet de savoir si  un noeud possède un fils?'
en fait dans mon code je n'ai pas testé cela, car je n'y connais rien!
Ce qui m'intéresse c'est que pour chaque ID_TERME_SOURCE_A qui est considéré comme le terme Parent, je vois en correspondance le ID_TERME_ASSOCIE qui est le terme ENFANT.
(ou plûtot ce que je veux voir ce qont les libellés correspondant à ID_TERME_SOURCE_A et ID_TERME_ASSOCIE).

Si tu peux m'aider à ce niveau je t'en serais vraiment extrèmement reconnaissante car JE TOURNE EN ROND!!!

Merci beaucoup de ton aide.

ps : le code que tu m'as transmis est une proposition de code à tester?


curieuse_asp


jeudi 26 mai 2005 à 16:46:07 | Re : [asp.net]creation de relation parent enfant dans un treeview-

drahcir

Si j'ai bien compris (j'en suis pas sûr ), les données contenues dans dt2 sont les noeuds fils de ceux contenus dans dt1.
Le contenu de dt2 : ce sont des noeuds fils, mais comment savoir de quel noeud père? C'est ça que je ne comprend pas. Sans relation entre un père et son fils, ça me semble difficile à réaliser.
Si par exemple un noeud père est situé sur une branche A, il faut que tu saches pour tous les noeuds fils lesquels ont pour branche père la branche A (Je suis peut-être pas trés clair là ...)
Le petit bout de code (qui n'en est pas vraiment) c'était au cas où tu aurais un champ qui servirai de liaison entre un père et son fils.
Si je peux t'être un peu plus utile, n'hésite pas.
@+

jeudi 26 mai 2005 à 16:58:29 | Re : [asp.net]creation de relation parent enfant dans un treeview-

harbonne

Bonjour et merci de ton aide.
Tu as bien compris le problème.
Il y a peut être besoin de créer une datarelation entre les deux tables dt1 et dt2.

Tu écris 'Le contenu de dt2 : ce sont des noeuds fils, mais comment savoir de quel noeud père?'
Et bien parce que dans la table ASSOCIES de la base de données SQLSERVER dont je t'ai décrit la structure(et pas la dt2 appelé ASSOCIE) il y a bien deux champs ID_TERME_SOURCE_A et ID_TERME_ASSOCIE ; ce que je veux simplement c'est voir les contenus des deux champs!!(ou plûtot les libellés).
Ce que je peux souligner c'est que ID_TERME_SOURCE_A et ID_TERME_ASSOCIE sont des clés etrangères de la table TERME puisque ID_TERME_SOURCE_A et ID_TERME_ASSOCIE sont tous les deux des ID_ TERME .
Cela fait il avancer le chmilblick ????
Je l'espère tout du moins

Bien cordialement.
Nathalie

curieuse_asp


jeudi 26 mai 2005 à 17:23:47 | Re : [asp.net]creation de relation parent enfant dans un treeview-

drahcir

ID_TERME_SOURCE_A et ID_TERME_ASSOCIE  sont identiques pour un père et son fils?

J'ai pensé à ça mais je sais pas ce que ça vaut (à mettre après TreeView2.Nodes.Add(nodeTERME)):

Dim DR As DataRow()
Dim dataR As DataRow

DR = dt2.select(dt2.item("ID_TERME_ASSOCIE ")  & "=' " &  rowTERME.item("ID_TERME_SOURCE_A") & " ' ") 

For Each dataR In DR
      Dim n As new TreeNode(dataR.item(libelleDuFils))
      nodeTERME.Nodes.Add(n)
      Next

le select() devrait te permettre de récupérer les enregistrements où ID_TERME_SOURCE_A = ID_TERME_ASSOCIE .
 Ensuite tu crées un noeud avec le libelle correspondant (fils) que tu ajoutes au noeud père que tu viens de créer.

Teste pour voir. (Si c'est complétement débile, tu as le droit de m'engueuler )
@+

jeudi 26 mai 2005 à 17:48:09 | Re : [asp.net]creation de relation parent enfant dans un treeview-

harbonne

Rebonjour,

Je te remercie pour ton code.
Je te fais un petit schema des données

ID_TA  ID_TERME_SOURCE_A ID_TERME_ASSOCIE
1                36                                       37
2                37                                        40
3                58                                        60
4                59                                        60
5                54                                        61
6                65                                        63
7                66                                        67
8                67                                        75

Tu vois bien qu'un ID_TERME_SOURCE_A n'est jamais égal à ID_TERME_ASSOCIE(id_ta est un numùéro incrémenté, qui n'a aucun intérêt pour nous).
Cela te permet-il d'y voir plus clair?
Cordialement.
Nathalie
  

curieuse_asp


vendredi 27 mai 2005 à 08:23:03 | Re : [asp.net]creation de relation parent enfant dans un treeview-

drahcir

Salut,

Je t'avoues que là je suis un peu perdu!

En + les ID_TERME_ASSOCIE contiennent des doublons? Du coup le bout de code que je t'ai donné ne fonctionne pas.
Franchement, je sèche
Je crois qu'il n'y a plus qu' à crier A L'AIDE!!!!!

@+


1 2

Cette discussion est classé dans : system, source, id, terme, associes


Répondre à ce message

Sujets en rapport avec ce message

2 Sources aides [ par saveourssouls ] http://www.vbfrance.com/code.aspx?ID=3548 http://www.vbfrance.com/code.aspx?ID=8484 Vous pourriez m'expliquez ces deux sources car je ne peut etre p inserting a new row [ par sidnet ] chers développer j'ai envie dinserer en nouveau record dans une table of my project developpé en vb.net et sql serveur 2000 mon code est le suivant: P problème de connexion bdd oracle [ par Xavleb ] pb winform [ par papy27 ] Salut, comment puis je gerer plusieurs winform Je m'explique, j'ai une winform principale et qd je clique sur un bouton, j'ouvre une winform ou je doi du batch dans du vbs [ par zatox ] Bonjour à tous, savez vous s'il est possible d'intégrer tout un code source batch dans un code source vbsun peu comme avec la commande system ("comman Modifiable en fonction d'un autre [ par charly2812 ] Bonjour,voila mon problème :j'ai une table Pays avec un ID_Pays et un libelle_Paysune table Region avec ID_Region,Libelle_Region et ID_Pays (correspon Tableau croisé ? repeater ? [ par djh3o ] Bon voila je vous explique mon probleme car je tourne en rond et pas moyen de trouver la solution. (j'en ai bien trouvé quelques unes, mais rempli de Traduction source c en VB.Net (Algo Bruteforce) [ par Redman31100 ] Bonjour j'ai essayé de mettre ce code : http://www.cppfrance.com/codes/ALGORITHME-BRUTE-FORCE_41911.aspx en VB.Net mais quand j'ai fait le test j'ai u Probleme d'ajout avec ado.net [ par saidisbah ] Bonjour.Je n'arrive pas a enregistrer des donnéesavec ado.net .Pourtant il n'y a pas d'erreur dans le code.<font color="#0 Listbox rempli de System.__ComObject [ par capitainecav ] Bonjour à tous,Je veux remplir une liste box avec plusieurs colonnes contenant les champs d'une table.Il n'y a pas de problème d'exécution du prog mai


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,326 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.