IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

TreeView et SelectedNodeChanged ne répondant pas.


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 7
    Par défaut TreeView et SelectedNodeChanged ne répondant pas.
    Bonjour,

    J'ai inclus dans ma page aspx un TreeView, que je remplis dynamiquement par une collection d'objets (je précise parce que ça a peut-être une importance sur la résolution du problème), et auquel j'ai assigné un événement SelectNodeChanged...

    Chacun des noeuds du TreeView est pourvu d'une checkbox (option ShowCheckbox : All)

    Mon problème est qu'en cliquant sur n'importe laquelle de ces checkbox des noeuds du TreeView en question, jamais l'événement SelectedNodeChanged n'est lancé (en debug je ne passe jamais dans dedans).

    J'ai également essayé l'événement TreeNodeCheckChanged, et pareil, jamais je ne passe dedans en debug....

    J'ai googlé un peu ('SelectedNodeChanged not fired') et il semblerait qu'y ait pas mal de gens qui aient eu le problème, j'ai lu que ce genre de problème survenait lorsqu'on renseignait la valeur NavigateToURL propre à chaque noeud... et effectivement c'est ce que je faisais dans mon code d'alimentation du TreeView... Mais même en lui assignant la valeur string.Empty... Pas plus de réactivité...


    Une idée ?

  2. #2
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut
    Il n'y a pas longtemps, je me suis battu avec le treeview aussi.

    Si ton problème vient d'un bug inhérent à .NET, tu peux pas test,cf mozinor.

    Dans ce cas, il faut prendre les armes.

    Je peux te proposer une solution violente à souhait:

    -Sur le oninit de ta page, crée un bouton asp:button auquel tu affecte une méthode click.

    -affecte false à la propriété visible de ton bouton.

    -par javascript, parcours le DOM de ton treeview et affecte toi-même le dopostback sur chacune de tes checkbox.
    Fait pointer le dopostback vers la méthode click du bouton rajouté précédement.(par le biais des paramètres de dopostback).

    Cette façon de faire permet aussi de personnaliser les contrôles présents dans le treeview...

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2003
    Messages : 353
    Par défaut
    Salut,
    est ce que tu as trouvé une solution à ton problème, car je suis confronté à ce problème aujourd'hui et j'aimerais bien savoir comment tu l'as résolu ?

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 126
    Par défaut
    bonjour,
    je crois qu'il faut que tu met l'option autoPostBack du treeview à TRUE

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2003
    Messages : 353
    Par défaut
    Citation Envoyé par kroukse Voir le message
    bonjour,
    je crois qu'il faut que tu met l'option autoPostBack du treeview à TRUE
    J'ai pas vu d'autopostback sur le treeview

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2003
    Messages : 353
    Par défaut
    En utilisant le code trouvé ci dessus et utilisant un des commentaires, j'ai réussi a faire cela qui fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Imports System
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Text
    Imports System.Web
    Imports System.Web.UI
    Imports ASP = System.Web.UI.WebControls
    Imports System.IO
     
    Namespace CustomControl
     
     
        <DefaultProperty("Text"), ToolboxData("<{0}:CustomTreeView runat=server></{0}:CustomTreeView>")> _
        Public Class CustomTreeView
            Inherits ASP.TreeView
            Implements IPostBackEventHandler
     
            Public Event CheckClick As EventHandler
     
     
            <Bindable(True), Category("Appearance"), DefaultValue(""), Localizable(True)> Property Text() As String
                Get
                    Dim s As String = CStr(ViewState("Text"))
                    If s Is Nothing Then
                        Return String.Empty
                    Else
                        Return s
                    End If
                End Get
     
                Set(ByVal Value As String)
                    ViewState("Text") = Value
                End Set
            End Property
     
     
            Protected Overrides Sub Render(ByVal output As HtmlTextWriter)
     
                Dim builder As StringBuilder = New StringBuilder
     
                Dim stringWriter As StringWriter = New StringWriter(builder)
     
                Dim tempWriter As HtmlTextWriter = New HtmlTextWriter(stringWriter)
                MyBase.Render(tempWriter)
     
     
                Dim find As String = "<input type=""checkbox"""
                Dim replace As String = "<input type=""checkbox"" onClick=""" & getPostBack() & """"
     
                output.Write(builder.ToString().Replace(find, replace))
     
            End Sub
     
            Protected Function getPostBack() As String
                Return Me.Page.GetPostBackEventReference(Me, "@CheckBox")
            End Function
     
            Protected Overrides Sub OnTreeNodeCheckChanged(ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs)
                RaiseEvent CheckClick(Me, e)
                MyBase.OnTreeNodeCheckChanged(e)
            End Sub
     
        End Class
     
    End Namespace
    ensuite dans ma page aspx, j'ai simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Protected Sub treeView1_CheckClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles treeView1.CheckClick
     
            MsgBox(CType(e, TreeNodeEventArgs).Node.Value)
        End Sub
    Et cela fonctionne !

    ps: je suis en VB

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2003
    Messages : 353
    Par défaut
    Tiens en naviguant sur le net, j'ai trouvé cette solution:
    http://www.keirgordon.com/2007/05/po...box-click.html

Discussions similaires

  1. fgets distant ne répondant pas
    Par AntoineNSG dans le forum Langage
    Réponses: 1
    Dernier message: 10/03/2008, 18h00
  2. Réponses: 2
    Dernier message: 20/08/2007, 06h35
  3. Slider ne répondant pas correctement
    Par superjoe dans le forum Visual C++
    Réponses: 6
    Dernier message: 02/06/2007, 21h18
  4. [C#][2.0] TreeView: noeud avec enfant ou pas ?
    Par Louisa dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/08/2006, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo