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 :

Linkbutton Evenement click ne lance pas


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Par défaut Linkbutton Evenement click ne lance pas
    Allo,

    J'ai un compositeControl qui doit renderer une liste de lien créés dynamiquement. Mes liens s'affichent bien, mais lorsque je clique dessus, je n'ai pas l'évènement click.

    Voici mon code :

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    Imports System.Web                          'Pour utiliser httputility
    Imports System.Web.UI                       'Permet d'overrider Render, car on a besoin du type HtmlTextWriter
    Imports DGAG.SHIN.SharePoint.Services       'Pour le ItemCode
    Imports System.Web.UI.WebControls           'Afin de pouvoir hériter de compositeControl
    Imports DGAG.SHIN.SharePoint.Services.WebControls   'Pour le SelecteurProvince
    Imports System.Net                      'Pour le httpWebResponse
    Imports System.Text                     'Pour Stringbuilder
     
     
     
     
    Namespace DGAG.SAE.Presentation.ControlesAutonomes
     
        Public Class SelecteurProvinceModal
            Inherits CompositeControl
     
    #Region "--- Constantes ---"
     
            ''' <summary>Valeur du nom de la classe pour le div englobant les listes d'hyperliens de provinces</summary>
            Private Const HTML_CLASS_LISTES_HYPERLIEN As String = "clearfix"
     
            Private Const NOM_FICHIER_JS As String = "SelecteurProvinceModale.js"
     
            ''' <summary>
            ''' String de retour du serveur lors d'un 404
            ''' </summary>
            ''' <remarks></remarks>
            Private Const MESSAGE_ERREUR_404 As String = "The remote server returned an error: (404) Not Found."
     
    #End Region
    #Region "--- Variables d'instances ---"
            Private mNbrProvParCol As Integer
     
            Private mListeProvinces As New List(Of ItemCode)
     
            Private mListeLiens As New List(Of LinkButton)
    #End Region
     
     
    #Region "--- Publiques ---"
    #Region "--- Propriétés ---"
            ''' <summary>
            ''' Valeur du nombre maximale de province par colonne
            ''' </summary>
            ''' <value>Le nombre de provinces par colonne désiré</value>
            ''' <returns>Le nombre de provinces par colonne</returns>
            ''' <remarks></remarks>
            Public Property NbrProvParCol() As Integer
                Get
                    Return mNbrProvParCol
                End Get
                Set(ByVal vValue As Integer)
                    mNbrProvParCol = vValue
                End Set
            End Property
     
    #End Region
    #Region "--- Méthodes ---"
            Public Sub New()
                If Not HttpContext.Current.Request.Url.ToString.Contains("/Base/") Then
                    mListeProvinces = SelecteurProvince.RecupererListeProvincesSharePoint
                End If
            End Sub
     
    #End Region
     
    #End Region
     
    #Region "--- Protected ---"
     
     
            ''' <summary>
            ''' On override Render afin de faire faire le rendu comme on le souhaite
            ''' </summary>
            ''' <param name="writer">Le htmlTextWriter dans lequel on met le html</param>
            ''' <remarks></remarks>
            Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
                GenererListeHyperLien(writer, mListeProvinces, NbrProvParCol)
            End Sub
    #End Region
    #Region "--- Privée ---"
     
            ''' <summary>
            ''' Crée la liste des liens que l'on "renderera" par la suite
            ''' </summary>
            ''' <remarks></remarks>
            Private Sub CreerListeLiens()
                Dim adresseDemandee As String = ""
                If HttpContext.Current.Request.UrlReferrer IsNot Nothing Then
                    adresseDemandee = HttpContext.Current.Request.UrlReferrer.ToString
                End If
     
                For Each province As ItemCode In mListeProvinces
                    Dim urlRedirection As String = SelecteurProvince.ChangerProvinceDansUrl(adresseDemandee, province.Abreviation)
                    Dim unLien As New LinkButton
                    unLien.Attributes.Add("href", urlRedirection)
                    unLien.ID = "lien" + province.Abreviation
                    unLien.Text = HttpUtility.HtmlEncode(province.Libelle)
                    AddHandler unLien.Click, AddressOf LinkButton_Click
                    mListeLiens.Add(unLien)
                Next
            End Sub
     
     
            ''' <summary>
            ''' Permet de générer le rendu de la liste d'hyperlien de provinces
            ''' </summary>
            ''' <param name="vWriter">Flux de sortie pour les rendus des contrôles et des balises</param>
            ''' <remarks></remarks>
            Private Sub GenererListeHyperLien(ByVal vWriter As HtmlTextWriter, ByRef rListeProvinces As List(Of ItemCode), ByVal vNombreProvinceParColonne As Integer)
     
                'Étape préparatoire
                Dim index As Integer = -1
                Dim nbrColonne As Integer = 0
                Dim nbrElement As Integer = 0
                Dim valeurRestante As Integer = 0
     
                If rListeProvinces IsNot Nothing Then
                    nbrElement = rListeProvinces.Count
                    nbrColonne = Math.DivRem(nbrElement, vNombreProvinceParColonne, valeurRestante)
                    If valeurRestante > 0 Then
                        nbrColonne += 1
                    End If
                End If
     
                'Génération du rendu
                vWriter.AddAttribute(HtmlTextWriterAttribute.Class, HTML_CLASS_LISTES_HYPERLIEN)
                vWriter.RenderBeginTag(HtmlTextWriterTag.Div)
                vWriter.WriteLine()
                vWriter.Indent += 1
     
                For colonne As Integer = 1 To nbrColonne
     
                    vWriter.RenderBeginTag(HtmlTextWriterTag.Ul)
                    vWriter.WriteLine()
                    vWriter.Indent += 1
     
                    For elementColonne As Integer = 1 To vNombreProvinceParColonne
                        index += 1
                        If index >= nbrElement Then
                            Exit For
                        End If
     
                        vWriter.RenderBeginTag(HtmlTextWriterTag.Li)
                        mListeLiens(index).RenderControl(vWriter)
                        vWriter.RenderEndTag()
                        vWriter.WriteLine()
     
                    Next elementColonne
     
                    vWriter.Indent -= 1
                    vWriter.RenderEndTag()
                    vWriter.WriteLine()
     
                Next colonne
     
                vWriter.Indent -= 1
                vWriter.RenderEndTag()
                vWriter.WriteLine()
     
     
            End Sub
     
            ''' <summary>
            ''' Permet de vérifier si une page existe
            ''' </summary>
            ''' <returns>true: la page existe</returns>
            ''' <remarks></remarks>
            Public Shared Function VerifierExistencePage(ByVal vUrl As String) As Boolean
                Dim pageExiste As Boolean = True
                Dim requete As WebRequest = HttpWebRequest.Create(vUrl)
                requete.Method = "HEAD"
                Dim reponse As WebResponse = Nothing
                Try
                    reponse = requete.GetResponse
                Catch ex As System.Exception
                    If String.Compare(ex.Message, MESSAGE_ERREUR_404) = 0 Then
                        pageExiste = False
                    End If
                End Try
     
                Return pageExiste
            End Function
     
            ''' <summary>
            ''' Génère le code javascript à renvoyer au client afin de fermer le popup et de rediriger le client.
            ''' </summary>
            ''' <param name="vAdressePage">l'adresse de la page</param>
            ''' <returns>Le code</returns>
            ''' <remarks></remarks>
            Private Function ObtenirJavascriptAInserer(ByVal vAdressePage As String) As String
                Dim codeJs As New StringBuilder
                codeJs.Append("window.top.location = '")
                codeJs.Append(vAdressePage)
                codeJs.Append("'; FermerModale();")
                Return codeJs.ToString
            End Function
     
     
            ''' <summary>
            ''' Ce qui se passe sur le clique d'un des liens
            ''' </summary>
            ''' <param name="sender"></param>
            ''' <param name="e"></param>
            ''' <remarks></remarks>
            Sub LinkButton_Click(ByVal sender As Object, ByVal e As EventArgs)
                Dim lnbClique As LinkButton = DirectCast(sender, LinkButton)
                Dim cibleLien As String = lnbClique.Attributes("href")
                Dim pageExiste As Boolean = VerifierExistencePage(cibleLien)
     
                If pageExiste Then
                    Dim nomFichierJs As String = UtilitaireSelecteurProvince.NOM_FICHIER_JS
                    ScriptManager.RegisterClientScriptInclude(Me, GetType(String), nomFichierJs, "/Includes/" + nomFichierJs)
                    Dim codeJs As String = ObtenirJavascriptAInserer(cibleLien)
                    ScriptManager.RegisterClientScriptBlock(Me, GetType(String), "FermetureRadWindowEtRedirection", codeJs, True)
                Else
                    Dim urlPageNoHit As String = UtilitaireSelecteurProvince.ObtenirUrlPage(UtilitaireSelecteurProvince.ObtenirUrlPartielPageSelecteurProvinceNoHitSelonLangue)
                    Dim positionProvince As Integer = SelecteurProvince.ObtenirPositionProvinceDansString(cibleLien)
                    Dim province As String = cibleLien.Substring(positionProvince, 2)
                    HttpContext.Current.Response.Cookies("Persistant").Value += "&" + UtilitaireSelecteurProvince.ELEMENT_COOKIE_PROVINCE_ERREUR + "=" + province
                    HttpContext.Current.Response.Redirect(urlPageNoHit)
                End If
            End Sub
     
            ''' <summary>
            ''' 
            ''' </summary>
            ''' <param name="sender"></param>
            ''' <param name="e"></param>
            ''' <remarks></remarks>
            Private Sub SelecteurProvinceModal_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                CreerListeLiens()
            End Sub
     
     
    #End Region
     
        End Class
    End Namespace

    J'ai lu qu'il fallait recréer les contrôles créés dynamiquement dans tout les cas dans le page_load, mais ça ne semble pas fonctionner davantage.

    Quelqu'un a déjà eu ce problème?

    Merci!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Par défaut
    En gros,

    je crée mes boutons à chaque Load.
    À ce moment, je leur attribue un ID et l'adresse de la fonction que je veux appeler sur le clique.

    Quelqu'un a une idée du problème?

    Thanx

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Par défaut
    J'ai trouvé mon erreur.

    Le bouton doit être ajouté à la page (i.e. me.controls.add(monBouton)) avant d'ajouter le handler du click.

    BOnne journée,

    Phil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Evenement Click sur LinkButton
    Par bakman dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/05/2013, 08h33
  2. [Débutant] Evenement Click qui ne fonctionne pas.
    Par Milyshyn76 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 21/11/2012, 15h27
  3. LinkButton dynamique et evenement click
    Par Ghunter59 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 21/04/2008, 14h30
  4. Bouton evenement click ne fonctionne pas
    Par delphine_lep dans le forum IHM
    Réponses: 3
    Dernier message: 06/04/2007, 15h12
  5. Evénement clicked ne se déclenche pas
    Par fmolko dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 09/08/2006, 11h53

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