[VS2005][VBNET] Control imbriqué

primactif Messages postés 119 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 3 octobre 2016 - 17 août 2005 à 17:26
primactif Messages postés 119 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 3 octobre 2016 - 18 août 2005 à 14:25
Bonjour
je rame fort avec les controle imbriqués.
mon objectif est d'alimenter un treeView ou label dans un DetalView mais il ne veut pas de mon code








*****code behind*****

Dim MyTreeViewCategorie As New TreeView
MyTreeViewCategorie = CType(DetailsView1.FindControl("TreeViewCategorie"), TreeView)
Dim MyLabCat As Label
MyLabCat = CType(DetailsView1.FindControl("LabCat"), Label)
Select Case CInt(row("CatNiveau").ToString)
Case 1
MyLabCat.Text = row("Niv1Libellé").ToString()
Dim NewNode1 As TreeNode = New TreeNode
NewNode1.Text = row("Niv1Libellé").ToString()
NewNode1.Value = row("Niv1ID").ToString()
MyTreeViewCategorie.Nodes.Add(NewNode1)
End Select

4 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 août 2005 à 17:51
Oula ton code est bien indigeste ;)

C'est quoi l'erreur que tu as ? car le code ne me donne pas envie de chercher l'erreur ;)


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
primactif Messages postés 119 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 3 octobre 2016 1
17 août 2005 à 18:46
Merci pour la réponse rapide toujours un bonheur

je veux en mode ReadOnly (affichage) complété un treeView
Page ASPX


DataSourceID= "DTSDetProd" GridLines="None" CellPadding="0" Width="100%" runat="server">


<Fields>


<asp:TemplateField HeaderText="Categorie" SortExpression="ProdCatID">





<
asp:TreeView ID="TreeViewCategorie" ExpandDepth="3" ImageSet="Simple" runat="server">






ASPX.VB


'Je récupère L'objet TreeViewCategorie inclus dans DetailsView1
Dim MyTreeViewCategorie As New TreeView


MyTreeViewCategorie = CType(DetailsView1.FindControl("TreeViewCategorie"), TreeView)


'En fonction de CatNiveau je créé Les TreeNode
Select Case CInt(row("CatNiveau"))



Case 1



Dim NewNode1 As TreeNode = New TreeNode


NewNode1.Text = row("Niv1Libellé").ToString()


NewNode1.Value = row("Niv1ID").ToString()


'Mon problème est ici j'obtient le message System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

TreeViewCategorie.Nodes.Add(NewNode1)


Case 2



Dim NewNode1 As TreeNode = New TreeNode


Dim NewNode2 As TreeNode = New TreeNode


NewNode1.Text = row("Niv2Libellé").ToString()


NewNode1.Value = row("Niv2ID").ToString()


NewNode2.Text = row("Niv1Libellé").ToString()


NewNode2.Value = row("Niv1ID").ToString()


NewNode1.ChildNodes.Add(NewNode2)


TreeViewCategorie.Nodes.Add(NewNode1)


Case 3



Dim NewNode1 As TreeNode = New TreeNode


Dim NewNode2 As TreeNode = New TreeNode


Dim NewNode3 As TreeNode = New TreeNode


NewNode1.Text = row("Niv3Libellé").ToString()


NewNode1.Value = row("Niv3ID").ToString()


NewNode2.Text = row("Niv2Libellé").ToString()


NewNode2.Value = row("Niv2ID").ToString()


NewNode3.Text = row("Niv1Libellé").ToString()


NewNode3.Value = row("Niv1ID").ToString()


NewNode2.ChildNodes.Add(NewNode3)


NewNode1.ChildNodes.Add(NewNode2)


TreeViewCategorie.Nodes.Add(NewNode1)


End Select



Bruno POUPON webmaster@primactif.com
HTTP://WWW.PRIMACTIF.COM
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 août 2005 à 18:55
Déjà


'Je récupère L'objet TreeViewCategorie inclus dans DetailsView1
Dim MyTreeViewCategorie As New TreeView


MyTreeViewCategorie = CType(DetailsView1.FindControl("TreeViewCategorie"), TreeView)

la il y a un truc pas normal, tu instancie un nouvel objet treeview puis aprés tu dis que ce treeview est egal a un autre treeview donc le new est inutile (a moins que tu es envie de bouffer des perf pour rien ;))

Ensuite je pense que le problème vient du fait que le treeview n'existe encore pas, d'ailleurs pourquoi le tag treeview n'est pas fermé ?

vu que tu es dans un detailsview ca va etre je pense comme pour un datagrid etc... ton treeview existera aprés le binding de ton objet, donc tu dois surement avoir un evenement bind ou init ou autre sur le detailsview ensuite tu pourras te servir de ton treeview

Si ca marche toujours pas, ce que tu peux faire c'est à la place de ton treeview mettre un placeholder, et construire le treeview entierement coté serveur (avec new etc...) puis une fois finis tu recherche le placeholder et tu rajoutes ton treeview dans sa collection de controls.


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
primactif Messages postés 119 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 3 octobre 2016 1
18 août 2005 à 14:25
Salut

la il y a un truc pas normal, tu instancie un nouvel objet treeview puis aprés tu dis que ce treeview est egal a un autre treeview donc le new est inutile (a moins que tu es envie de bouffer des perf pour rien ;))
effectivement en créer un new ne sert à rien


Dim MyTreeViewCategorie As TreeView


MyTreeViewCategorie = CType(DetailsView1.FindControl("TreeViewCategorie"), TreeView)

Cela devrait suffir

Ensuite je pense que le problème vient du fait que le treeview n'existe encore pas, d'ailleurs pourquoi le tag treeview n'est pas fermé ?

La on touche le vrais problème j'ai essayé avec




OnLoad ="LoadTreeViewCategorie">



code behind
le TreeView est imbriqué dans un DetailView et je ne vois pas comment faire, j'ai essayé sans conviction

Sub LoadTreeViewCategorie(ByVal e As System.Web.UI.WebControls.TreeView)

ça ne marche pas

vu que tu es dans un detailsview ca va etre je pense comme pour un datagrid etc... ton treeview existera aprés le binding de ton objet, donc tu dois surement avoir un evenement bind ou init ou autre sur le detailsview ensuite tu pourras te servir de ton treeview
Ben le soucis c'est qu'au niveau event du detailview j'ai essayé


Protected Sub DetailsView1_DataBinding(ByVal sender As Object, ByVal e As System.EventArgs) Handles DetailsView1.DataBinding

ça ne marche pas le treeview n'existe toujours pas

Si ca marche toujours pas, ce que tu peux faire c'est à la place de ton treeview mettre un placeholder, et construire le treeview entierement coté serveur (avec new etc...) puis une fois finis tu recherche le placeholder et tu rajoutes ton treeview dans sa collection de controls.
Ouais c'est une solution mais l'accès au controles dynamiques est encore plus complexe (enfin pour moi)

Bruno POUPON webmaster@primactif.com
HTTP://WWW.PRIMACTIF.COM
0
Rejoignez-nous