begin process at 2012 05 28 13:31:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

WebForms

 > 

WebControl

 > 

Treeview


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Treeview

mardi 9 septembre 2008 à 16:13:06 | Treeview

thybang

Bonjour,

Je suis en train de créer une Treeview.

Pour chacun de ses nodes, je voudrai ajouter une image qui me permettrai d'ajouter un élément fils.
J'utilise déja l'image ImageURL pour afficher une icône devant le texte de ma node.

Je voudrais ajouter l'image pour l'ajout d'un fils aprés ce texte.

Quelqu'un a t il une solution?

Merci d'avance,

--

plus thy avance, plus thy recule ...

mercredi 10 septembre 2008 à 20:31:46 | Re : Treeview

ggtry

Bonsoir,

Tu peux essayer peut-être avec RenderPostText, qui permets d'écrire de l'html après le texte des noeuds du TreeView, et donc d'ajouter une image ou un imageButton. Je ne crois pas qu'il y ait de solution directe en asp.
Ca peut être un peu pénible à gérer toutefois...

GGtry
jeudi 11 septembre 2008 à 14:50:05 | Re : Treeview

thybang

bonjour,

Merci pour l'info. Je n'avais pas du tout vu ce champs.

Je test de suite.

plus thy avance, plus thy recule ...

jeudi 11 septembre 2008 à 15:22:17 | Re : Treeview

ggtry

Bonjour,

Désolé, je n'ai pas été précis : renderposttext s'utilise à travers une classe.
Un exemple (le plus simple à faire, mais pas forcément le plus simple à gérer car tu devras créer ton treeview en dynamique, par le code) avec un imagebutton (en vb) :

Public Class arbrenoeud
        Inherits TreeNode
        Protected Overrides Sub RenderPostText(ByVal writer As HtmlTextWriter)
            writer.AddAttribute(HtmlTextWriterAttribute.Type, "image")
            writer.AddAttribute(HtmlTextWriterAttribute.Src, "Ton fichier image")
            writer.AddAttribute("alt", "image2")
            writer.RenderBeginTag(HtmlTextWriterTag.Input)
            writer.RenderEndTag() 
        End Sub
    End Class

(mais le problème sera de retrouver quel imagebutton a été pressé pour savoir où ajouter un childnode...)


GGtry
jeudi 11 septembre 2008 à 16:51:43 | Re : Treeview

thybang


Le problème de savoir quelle image button a été pressé est résolu en ajoutant uen fonction javascript :
par exemple :
writer.AddAttribute(HTMLTextWriterAttribute.Onclick, "alert(" + this.Value + ");");

Par contre, en utilisant cette méthode, l'event javascript s'effectue, et l'arbre et raffraichi, mais sans valeur au noeud.

Je réécrit alors la méthode SaveViewState et LoadviewState

    protected override object SaveViewState()
    {
        object[] arrState = new object[2];
        arrState[0] = base.SaveViewState();
        arrState[1] = this.NodeText;

        return arrState;
    }

    protected override void LoadViewState(object savedState)
    {
        if (savedState != null)
        {
            object[] arrState = savedState as object[];

            this.NodeText = (string)arrState[1];
            base.LoadViewState(arrState[0]);
        }
    }

Par contre là, j'ai un problème lorsque l'arbre se raffraichie.
"
The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request.  For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
"

Je comprend pas du tout pourquoi il dit ne pas reconnaitre les éléments de l'arbre.

plus thy avance, plus thy recule ...

jeudi 11 septembre 2008 à 18:05:08 | Re : Treeview

ggtry

Pour saveviewstate etc., je ne peux pas trop t'aider immédiatement...
Mais que veux-tu dire exactement par "l'arbre est rafraîchi, mais sans valeur au noeud" ?
Comment crées-tu ton arbre ? et à quel moment ?

GGtry
jeudi 11 septembre 2008 à 18:59:04 | Re : Treeview

ggtry

Réponse acceptée !

Sur ton code, NodeText fait référence à quoi exactement ?

Je t'envoie un exemple (mais c'est une class vb, je ne connais le c#) qui pourrait faciliter la chose peut-être, avec une classe qui hérite de treeview pour pouvoir construire complétement un arbre personnalisé en asp.
J'ai ajouté également une propriété (nommée ici CImage, qui est boolean, et qui détermine si le noeud doit recevoir ou non une image sur la droite).
J'ai fait un test en ajoutant des noeuds enfants sur un clic sur l'imagebutton des noeuds principaux : ça à l'air de marcher correctement.

Code VB :

Imports Microsoft.VisualBasic
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.Services.Protocols

Namespace Arbre
    Public Class MonArbre
        Inherits TreeView
        Protected Overrides Function CreateNode() As System.Web.UI.WebControls.TreeNode
            Return New arbrenoeud()
        End Function
    End Class

    Public Class arbrenoeud
        Inherits TreeNode
        Protected Overrides Sub RenderPostText(ByVal writer As HtmlTextWriter)
            If CImage2 = False Then Return
            writer.AddAttribute(HtmlTextWriterAttribute.Type, "image")
            writer.AddAttribute(HtmlTextWriterAttribute.Src, "et1.png")
            writer.AddAttribute("alt", "image2")
            writer.AddAttribute("onclick", "poster(this)")
            writer.RenderBeginTag(HtmlTextWriterTag.Input)
            writer.RenderEndTag()
            MyBase.RenderPostText(writer)
        End Sub
        Private CImage2 As Boolean
        Public Property CImage() As Boolean
            Get
                Return CImage2
            End Get
            Set(ByVal Value As Boolean)
                CImage2 = Value
            End Set
        End Property

        Protected Overrides Function SaveViewState() As Object
            Dim arrState(2) As Object
            arrState(0) = MyBase.SaveViewState()
            arrState(1) = Me.CImage
            Return arrState
        End Function

        Protected Overrides Sub LoadViewState(ByVal savedState As Object)
            If Not savedState Is Nothing Then
                Dim arrState() As Object = savedState
                Me.CImage = CType(arrState(1), Boolean)
                MyBase.LoadViewState(arrState(0))
            End If
        End Sub
    End Class

End Namespace

Dans ma page,

en y ajoutant :
<%@ Register TagPrefix="toto" Namespace="Arbre" %>
je peux écrire en statique, par exemple :

<toto:MonArbre ID="treeview1" runat="server">
    <Nodes>
    <toto:ArbreNoeud Text="Premier Noeud" CImage="true" ImageUrl="et2.png" Value="1">
        <toto:ArbreNoeud Text="Texte1" ImageUrl="et2.png"  Value="Texte1"></toto:ArbreNoeud>
        <toto:ArbreNoeud Text="Texte2" ImageUrl="et2.png" Value="Texte2"></toto:ArbreNoeud>
    </toto:ArbreNoeud>
    <toto:ArbreNoeud Text="Deuxi&#232;me Noeud" CImage="true" ImageUrl="et2.png" Value="2">
        <toto:ArbreNoeud Text="Texte4" ImageUrl="et2.png" Value="Texte4"></toto:ArbreNoeud>
        <toto:ArbreNoeud Text="Texte5" ImageUrl="et2.png" Value="Texte5"></toto:ArbreNoeud>
    </toto:ArbreNoeud>
    </Nodes>
</toto:MonArbre>


GGtry

jeudi 11 septembre 2008 à 19:07:36 | Re : Treeview

ggtry

Ah oui, un petit oubli :
ce que j'ai fait sur CImage est assez idiot. Plutôt qu'une valeur booléenne, il vaudrait mieux changer et y mettre le nom de fichier de l'image à afficher à droite... et modifier le test en conséquence. Ca permettra de changer facilement l'image à afficher au besoin.

GGtry
vendredi 12 septembre 2008 à 11:03:55 | Re : Treeview

thybang

Gros merci ...

Pour répondre à ta question, le NodeText est une chaîne de caractère correspondant au text à afficher.
en fait, je veux que chaque noeud ait la forme :
<ImageURL> <Text> <CImage>

En réalisant ce que j'ai fait, le <Text> n'apparait pas.

plus thy avance, plus thy recule ...

vendredi 12 septembre 2008 à 13:51:22 | Re : Treeview

ggtry

Bonjour,

Pour ton problème de disparition de texte, et l'autre problème avec loadviewstate.
En fait, le problème 1/ se pose probablement du fait que tu ajoutes les noeuds principaux lors du onload (dans ce cas, il faudrait mettre enableviewstate à false, mais cela pourrait poser problème pour les ajouts faits ensuite). En le faisant sur OnInit, le problème devrait ne pas se poser et tu n'aurais plus besoin du loadviewstate. Cela dit, l'ajout de nouveau noeud à l'aide du bouton risque à son tour d'être problèmatique : il vaut donc mieux utiliser le code plus complet que j'ai envoyé, qui ne devrait pas poser problème.
Pour le problème 2/ (et plus généralement), tu peux regarder ici : [ Lien ]


GGtry

1 2

Cette discussion est classée dans : texte, image, ajouter, treeview, fils


Répondre à ce message

Sujets en rapport avec ce message

texte sur image [ par jesusonline ] J'aimerais rajouter un texte sur chacune de mes images de mon site mais comme j'en ai pas mal je voudrais savoir si c pas possible directement avec l Pb pour inserer texte dynamiquement sur une image [ par okayre1 ] Comment insérer dynamiquement un texte sur une image ? texte dans une image [ par tmcuh ] voilà je cherche à mettre du texte dans une image, c'est le truc le plus basic je pense pour faire des pages web mais en asp.net j'arrive pas :(   est Image dans PDF [ par tikenjoe ] Bonjour à tous!J'essaie depuis plusieurs jours d'utiliser FPDF pour ASP, mais c'est la grosse galère!!! J'arrive à générer du texte dans un pdf. &n deplacer une image parcouru dans un serveur [ par perle007 ] bonjour a tousje suis nouvelle sur le forum j'ai une question a poser je vous serez tres reconnaissante si vous me donner la reponsealors, je travail TreeView : retour à la ligne du texte [ par CyrilTitard ] BonjourAfin de limiter la largeur d'un TreeView à un espace défini, je souhaiterai savoir comment instaurer automatiquement un retour à la ligne du te Justifier un texte et l'exporter dans une image - Besoin d'une fonction [ par chrislcf ] Bonjour à tous,Je découvre lentement ce site et je suis à la recherche d'un code source car n'étant pas programmeur je ne m'en sors pas. Néanmoins je Treeview & CSS [ par kaygee ] Hello à tous, J'ai un petit souci pour le mise en page de mon treeview. J'ai donc un treeview de 200px de width et je veux sur mes noeuds parents j Comment ajouter pop up sur texte [ par choutaleina ] Bonjour, j'ecris et n'importe qui peut m'aider.J'ai ajouter un info-bulle sur un texte comme suit:Moi-même mai s pour ajouter dans un treeview ? [ par superkiller ] bonjour, je dois creer un menu treeview dont les lien et nom des nodes sont dans une base de données access.le probleme est que je ne sais p


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,652 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales