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 : Treeview aux fonctions étendues [ Web 2.0 / Ajax ] (equinoxe83)

mercredi 24 septembre 2008 à 09:32:01 | Treeview aux fonctions étendues

equinoxe83

Membre Club
Bonjour à tous,
J'ai une base de données qui intègre 3 tables thème, article, couleur.
J'arrive bien à remplir mon treeview avec les éléments en mode hierarchique (merci JesusOnLine !!)
Ce que je voudrais, dans l'absolu, c'est (un peu à la manière du Inbox d'outlook) placer en gras le noeud s'il y a du stock dans la couleur et placer le Nombre d'articles de cette couleur (entre parenthèse).
J'ai vu qu'il existait des contrôles étendus payants mais je ne suis pas chaud pour intégrer des contrôles "exautiques" (surtout que j'utilise celà dans un updatepanel ajax...).
Si quelqu'un à une idée de comment procéder, merci d'avance.
@ bientôt


mercredi 24 septembre 2008 à 22:52:34 | Re : Treeview aux fonctions étendues

ggtry

Réponse acceptée !
Bonsoir,

Je ne sais pas si cela peut répondre à tes attentes, mais tu peux regarder du côté de renderpretext et renderposttext, et éventuellement t'inspirer de ceci :

http://www.aspfr.com/forum/sujet-TREEVIEW_1199969.aspx

Pour ton cas, tu pourrais adapter en écrivant plutôt (exemple rudimentaire, à améliorer, d'après l'exemple donné dans le lien) :

Protected Overrides Sub RenderPretext(ByVal writer As HtmlTextWriter)
            If IsNothing(Me.itemgras) = False Then
                writer.RenderBeginTag(HtmlTextWriterTag.B)
                MyBase.RenderPreText(writer)
            End If
        End Sub
 Protected Overrides Sub RenderPostText(ByVal writer As HtmlTextWriter)
            If IsNothing(Me.itemgras) = False Then
                writer.Write(" (" & Me.itemgras & ")")
                writer.RenderEndTag()
                MyBase.RenderPostText(writer)
            End If
  End Sub

...en créant une public property nommée "itemgras", l'idée étant ici que si 'itemgras' n'est pas défini, le noeud se rend normalement tandis que s'il est défini (par exemple avec un nombre représentant ton stock), le noeud est rendu en gras avec sur le côté, entre parenthèses, le nombre en question.
En principe, tu pourras le remplir via ton code, et tu pourras probablement (enfin je crois) l'intégrer en ajax.


GGtry

jeudi 25 septembre 2008 à 14:32:26 | Re : Treeview aux fonctions étendues

equinoxe83

Membre Club
Merci à toi ggtry !
J'ai comrpis le principe et je pense que c'est la solution!
MAIS (il y en a tjs un, non ??) j'ai un osuci dans l'intégration du namespace dans ma page.
L'intégration dans mon code behind ne pose aucun souci (c'est déjà ça ..).
Au niveau de ma page aspx, il accepte bien :

<%

@RegisterTagPrefix="toto"Namespace="Arbre" %>

mais pas le controle lui-même (MonArbre n'est pas un élément connu) :

<toto:MonArbreID="TreeView1"runat="server"ExpandDepth="0"ImageSet="Simple"

NodeIndent="15"ShowLines="True">

<ParentNodeStyleFont-Bold="False"/>

<HoverNodeStyleFont-Underline="True"ForeColor="#DD5555"/>

<SelectedNodeStyleFont-Underline="True"ForeColor="#DD5555"

HorizontalPadding="0px"VerticalPadding="0px"/>

<NodeStyleFont-Names="Verdana"Font-Size="8pt"ForeColor="Black"

HorizontalPadding="0px"NodeSpacing="0px"VerticalPadding="0px"/>

</toto:MonArbre>

C'est certainement un Pb de culture (je n'ai jamais eu à utiliser de controles utilisateurs avant).

J'ai bien tenté de place ce code dans un ascx mais là, c'est carémment toto qu'il refuse ..
Tu as une idée ? une piste ?? un bon tuto ????
Merci d'avance


jeudi 25 septembre 2008 à 15:29:57 | Re : Treeview aux fonctions étendues

equinoxe83

Membre Club
En fait, le placement dans un ascx me donne exactement le même résultat.
La directive :

<%

@RegisterTagPrefix="toto"TagName="WebUserControl"Src="~/WebUserControl.ascx" %>

Le Pb viendrait-il du code lui-même ? Ci dessous le code (mais il est très proche de ta solution initiale)

Namespace

Arbre

PublicClass TreeViewEtendu

Inherits TreeView

ProtectedOverridesFunction CreateNode() As System.Web.UI.WebControls.TreeNode

ReturnNew TreeViewEtenduNoeud()

EndFunction

EndClass

PublicClass TreeViewEtenduNoeud

Inherits TreeNode

Private nbr AsInteger

PublicProperty itemgras() AsInteger

Get

Return nbr

EndGet

Set(ByVal Value AsInteger)

nbr = Value

EndSet

EndProperty

ProtectedOverridesSub RenderPretext(ByVal writer As HtmlTextWriter)

If IsNothing(Me.itemgras) = FalseThen

writer.RenderBeginTag(HtmlTextWriterTag.B)

MyBase.RenderPreText(writer)

EndIf

EndSub

ProtectedOverridesSub RenderPostText(ByVal writer As HtmlTextWriter)

If IsNothing(Me.itemgras) = FalseThen

writer.Write(

" (" & Me.itemgras & ")")

writer.RenderEndTag()

MyBase.RenderPostText(writer)

EndIf

EndSub

 

ProtectedOverridesFunction SaveViewState() AsObject

Dim arrState(2) AsObject

arrState(0) =

MyBase.SaveViewState()

arrState(1) =

Me.itemgras

Return arrState

EndFunction

ProtectedOverridesSub LoadViewState(ByVal savedState AsObject)

IfNot savedState IsNothingThen

Dim arrState() AsObject = savedState

Me.itemgras = CType(arrState(1), Boolean)

MyBase.LoadViewState(arrState(0))

EndIf

EndSub

EndClass

End

Namespace

jeudi 25 septembre 2008 à 15:33:59 | Re : Treeview aux fonctions étendues

ggtry

Bonjour,

Tu as peut-être mis ton code dans le fichier de code-behind : tapage.aspx.vb ?
Si c'est cela, place le plutôt dans un fichier class.vb qui sera mis dans ton dossier App_Code ("ajouter un nouvel élément", etc.)

GGtry

jeudi 25 septembre 2008 à 15:35:38 | Re : Treeview aux fonctions étendues

equinoxe83

Membre Club
C'est tout à fait celà !!
Quand j'évoquais un Pb de culture ...
Merci à toi,
je vais tester tout ça et te fais un retour.

vendredi 26 septembre 2008 à 09:46:42 | Re : Treeview aux fonctions étendues

equinoxe83

Membre Club

bonjour ggtry,
ça marche nettement mieux !!
Mais (encore un ??) je n'arrive pas à conserver itemgras après le postback.
Je m'explique :
j'arrive bien à avoir le Nbr d'article en gras lorsque je déploie le treeview au premier lancement mais dès que je clic dessus, il le retire.
Si je tente d'ouvrir une autre couleur, le itemgras n'apparait pas non plus (alors que si je déploie n'importe quel couleur avant ce premier postback, j'ai bien le itemgras qui s'affiche).
J'ai désactivé le saveviewstate et loaviewstate mais ça ne change rien.
Par contre, si je désactive le viexstate sur le treeview1, je retrouve mes items (sauf que l'arbre se repli au postback).
Une idée ??
Encore merci pour ton aide précieuse ..





vendredi 26 septembre 2008 à 10:18:45 | Re : Treeview aux fonctions étendues

equinoxe83

Membre Club

OK,
en regardant en bas de ton post sur le sujet, j'ai remarqué que tu proposais de placer le code de remplissage dans le onInit du treeview.
Ben ça marche nickel !
Mais dans ces conditions, je dois repeupler l'arbre à chaque fois, donc interroger la base, recréer l'arbre, etc ...
Mais c'est la seule solution, j'imagine ?
Bien que je ne vois pas pourquoi il perd uniquement cette propriété ...
Et là se pose encore le Pb ... de culture !! Je vais finir agriculteur si ça continue ...
Quoi qu'il en soit, un GRAND MERCI à toi ggtry pour ton aide précieuse !!!!!!!

 


vendredi 26 septembre 2008 à 13:07:34 | Re : Treeview aux fonctions étendues

ggtry

Réponse acceptée !
Bonjour,

En principe, tu ne devrais pas avoir besoin de repeupler ton arbre à chaque fois sur le oninit, à moins que outre les noeuds, tu crées aussi ton arbre en dynamique, dans un placeholder.
Mais si l'arbre est déclaré dans l'asp en statique, tu peux très bien le peupler lors du premier page load (en faisant un test pour voir si la page n'est pas postback) par exemple, ou même ajouter des noeuds ensuite sur un autre événement.
Dans le post que tu cites, je répondais à une question qui avait été posée avant et qui ne concernait pas la classe complète, mais une version réduite (celle qui est donnée tout au début du post).
Si le formatage ajouté par 'itemgras' ne se conserve pas entre les postback, c'est peut-être qu'il y a un problème dans saveviewstate() et loadviewstate(), qui sont précisément là pour conserver ce formatage.
En fait, le treeview ainsi modifié devrait être utilisable à peu près comme un treeview de base.
Eventuellement, tu peux montrer le code par lequel tu remplis tes noeuds et la classe modifiée (en message privé peut-être).

GGtry

vendredi 26 septembre 2008 à 13:17:26 | Re : Treeview aux fonctions étendues

equinoxe83

Membre Club
Bonne idée !!
Je vais t'envoyer ça ..
Merci


1 2

Cette discussion est classé dans : couleur, treeview, fonctions, placer, étendues


Répondre à ce message

Sujets en rapport avec ce message

Couleur de fond d'un TreeView [ par drahcir ] Salut à tous,j'ai un probléme tout con : j'ai un controle Treeview dans ma page qui elle possède un fond en dégradé. J'ai défini la couleur de fond de Changer la couleur d'un item dans une listBox [ par elpens ] Bonjour a tous,Je suis en train d'essayer de changer la couleur d'un item dans une listBox.Cependant, je n'y arrive point  J'ai une liste qui affiche Treeview vb.net [ par Pachanka ] Je comprends pas, depuis hier je manipule le treeview en asp.net (vb) et sur chaque noeud, j'ai un lien qui apparait que j'aimerais faire disparaitre. couleur de fond au passage de la souris [ par wally88 ] Bonsoir, j'ai une datalist comme menu en faite et aux pasage de la souris je souhaiterais que la couleur de fond change de couleur.Voir le menu de mic Callback support [ par zigxag ] Bonjour,J'ai fait un intranet le probleme est qu'il comporte des fonctions Callback.Le probleme c'est que certains navigateurs n'arrivent pas à faire Construction Dynamique de multiples Dropdownlist [ par angelflo18 ] Bonjour à tous et par avance un grand merci pour toute l'aide que vous pourrez m'apporter !Nouveau venu dans le monde .NET, et après de multiples rech Treeview [ par gharbi1 ] comment lié l'evennement click d'un Node avec un gridview pour afficher le contenu d'une base de données ressources [ par Pepin21 ] Hello,voilà ma question : dans mon application j'ai besoin de 2 fonctions : une annulation et une validation. Je pourrais avoir la même page web pour TreeView et Requête récursive en ASP 2.0 et SQL 2005 [ par choubiket ] Bonjour,je cherche à afficher le résultat d'une requête hiérarchique en SQL 2005 dans un contrôle de type TreeView... savez vous comment faire en ASP. TreeView ASP/JavaScript [ par Baguauda ] Bonjour a tous,donc voila je debute en ASP (3j ) et j'ai créer une sorte de treeview en ASP/JavaScrip.JavaScript s'occupe de l'affichage ou non des no


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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 : 2,168 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é.