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 :

Accéder à un contrôle dans un ASCX


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Accéder à un contrôle dans un ASCX
    Bonjour

    Je suis confronté à un souci d'accès à un contrôle pour mettre en place une Validator. Dans mon système j'utilise des ASCX. Là, j'en ai fais un qui me permet de mettre en place une AutoCompleteExtender. Donc il y a une TextBox dans l'ASCX.

    Cet ASCX est palcé dans une cellule d'une table. Dans la cellule d'à côté je mets (enfin je tente) un Validator et comme tout validator il veut un ControleToCompare, sous la forme de l'ID.

    Dans ma classe externe de création des contrôles des champs de mes formulaires (heu oui, je me suis amusé à faire ça, c'est super souple pour fabriquer des formulaires à a volée ! ) je récupère bien cette TextBox, de cette manière :
    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
     
    Public Shared Sub AjouterValidator(ByVal rqDefinitionChamp As String, ByRef cellVal As TableCell)
                Dim dtDefinitionChamp As DataTable = New DManager("DataDev").RetournerTable(rqDefinitionChamp)
                If dtDefinitionChamp.Rows(0).Item("Obligatoire") = 1 Then
                    Select Case dtDefinitionChamp.Rows(0).Item("Type_Champ")
                        Case "dac"
                            Dim r As TableRow = cellVal.Parent
                            Dim t As TextBox = r.Cells(1).Controls(0).Controls(0).Controls(0)
                            Dim rfv As New RequiredFieldValidator
                            With rfv
                                .ID = "rfv" & dtDefinitionChamp.Rows(0).Item("Type_Champ") & dtDefinitionChamp.Rows(0).Item("Nom_Champ")
                                .ErrorMessage = "Ce champ est obligatoire"
                                .ControlToValidate = t.ID
                            End With
                            cellVal.Controls.Add(rfv)
                        Case Else
                            Dim rfv As New RequiredFieldValidator
                            With rfv
                                .ID = "rfv" & dtDefinitionChamp.Rows(0).Item("Type_Champ") & dtDefinitionChamp.Rows(0).Item("Nom_Champ")
                                .ErrorMessage = "Ce champ est obligatoire"
                                .ControlToValidate = dtDefinitionChamp.Rows(0).Item("Type_Champ") & dtDefinitionChamp.Rows(0).Item("Nom_Champ")
                            End With
                            cellVal.Controls.Add(rfv)
                    End Select
                End If
            End Sub
    Celui qui compte c'est le Case "dac". L'autre c'est pour les contrôles simples.
    Mais lorsque je lui mets le t.ID, ben il trouve pas le contrôle et me mets son bien heureux mesasge trés clair :
    Impossible de trouver l'ID du contrôle 'txtACE' référencé par la propriété 'ControlToValidate' de 'rfvdacVille'.
    txtACE étant l'ID de la TextBOx dans l'ASCX et rfvdacVille étant l'ID du RequestFieldValidator que j'essaie de placer.

    Pouvez vous m'aider à plonger dans l'ASCX pour récupérer l'ID de la TexteBox ?

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    L'ID est modifié lors de la génération.
    Essaye avec t.ClientID

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide.

    Le message est un poil différents mais revient au même :
    Impossible de trouver l'ID du contrôle 'ctl00_cphCentral_InscriptionFormulaire_dacVille_txtACE' référencé par la propriété 'ControlToValidate' de 'rfvdacVille'.
    Je pense qu'en fait il n'arrive pas à "rentrer" dans l'ASCX pour trouver le contrôle. Je dois pas employer la bonne méthode pour lui expliquer où se trouve la TextBox que je cherche.

    Vois tu ce que je veux dire ?

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Et le contrôle ctl00_cphCentral_InscriptionFormulaire_dacVille_txtACE est bien présent dans la page (dans le code html généré)?

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Oui, il est bien là.
    Voici le code HTML interprété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <tr id="ctl00_cphCentral_InscriptionFormulaire_rowVille">
    <td class="FORM_CelLabel"><span>Ville (par code postal)</span></td>
    <td id="ctl00_cphCentral_InscriptionFormulaire_cellVille" class="FORM_CelChamp"><input name="ctl00$cphCentral$InscriptionFormulaire$dacVille$txtACE" type="text" value="Votre code postal" id="ctl00_cphCentral_InscriptionFormulaire_dacVille_txtACE" />
     
    <script type="text/javascript"> var tbCity_ClientItemSelected = function(sender, e){$get('ctl00_cphCentral_InscriptionFormulaire_dacVille_hfRecupValu').value = e.get_value(); }</script>
    <input type="hidden" name="ctl00$cphCentral$InscriptionFormulaire$dacVille$hfRecupValu" id="ctl00_cphCentral_InscriptionFormulaire_dacVille_hfRecupValu" /> </td><td id="ctl00_cphCentral_InscriptionFormulaire_cellErrVille" class="FORM_CelErr"></td>
    </tr>
    Là on vois bien la premier colone qui contient le libellé du champ, le deuxième qui contient le champ, qui est l'ASCX qui permet de choisir sa ville avec l'AutoCompleteExtender et la troisième colone qui est censé contenir le Validator. Mais vu que ça marche pas, ben il l'a pas mis.

    Voilà, ça te parle plus ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2012, 12h02
  2. Comment accéder à un contrôle dans un DetailsView
    Par laurent12345 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/05/2010, 09h28
  3. Réponses: 3
    Dernier message: 23/05/2009, 17h31
  4. Comment accéder à ce contrôle dans le code behind ?
    Par insane_80 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/04/2009, 13h34
  5. Ajouter des contrôles dans la palette des contrôles.
    Par WOLO Laurent dans le forum MFC
    Réponses: 4
    Dernier message: 22/01/2004, 08h27

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