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 :

Problème avec FindControl


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Par défaut Problème avec FindControl
    Bonjour,
    J'ai un petit problème, j'essai de récuprer un composant textbox dans une page aspx



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    List<QCM.Answer> ans = new List<QCM.Answer>();
     
     
            for (int i = 1; i < 3; i++)
            {
                ans.Add(new QCM.Answer());
     
                ans[i-1].Entitled = ((System.Web.UI.WebControls.TextBox)   Page.FindControl("txt_reponse"+i.ToString() )).Text;    // affecter le nom introduit dans le textbox sans le champs Entitled de la table de base de données.            
                ans[i-1].Save();
                az.Answers.Add(ans[i-1]);
     
            }
    si je fais ans[i-1] = txt_reponse1.Text ==> ça marche et la donnée se trouve bien dans la table

    Par contre si j'essai de faire comme cité ci-haut :

    Malheureusement lors de l'exécution , une exception s'est lancée :

    L'exception System.NullReferenceException n'a pas été gérée par le code utilisateur
    Message="La référence d'objet n'est pas définie à une instance d'un objet."
    Source="QCM"
    StackTrace:
    à person_admin_AjouterQuestion.btn7_Click(Object sender, EventArgs e) dans d:\profiles\mmmmm\Desktop\tutoriel\Proj_QCM\QCM_Code\person\admin\AjouterQuestion.aspx.cs:ligne 64
    à System.Web.UI.WebControls.Button.OnClick(EventArgs e)
    à System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
    à System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
    à System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
    à System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
    à System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)



    Au secours

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Par défaut
    alors pas de solution

  3. #3
    Membre confirmé Avatar de obitskater
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2008
    Messages : 163
    Par défaut
    Est ce que tes TextBox se trouvent directement dans ta page, ou sont dans un conteneur de la page type panel, etc...?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Par défaut
    Citation Envoyé par obitskater Voir le message
    Est ce que tes TextBox se trouvent directement dans ta page, ou sont dans un conteneur de la page type panel, etc...?
    Ils se trouvent dans un table. A votre avis ça cause un problème le faite de les placer dans un tableau ?
    Merci pour ta réponse

  5. #5
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    oui. il me semble que quand tu fais page.findcontrol il ne trouve que les controls qui ne sont pas dans d'autres controls. sinon ton code est dans un evenement onclick donc tu sais quel objet a déclenché le click. essaye par ce biais de faire un findcontrol à partir de ce control.
    Moi ce que je faisais c'est que je l'ecrivais plus ou moins en dure le chemin du control en utilisant la liste Controls qui est dans le control qui a declenché le click.

  6. #6
    Membre confirmé Avatar de obitskater
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2008
    Messages : 163
    Par défaut
    Si je ne me trompe pas, quand tu fais Page.FindControl(), il va chercher le controle à la première couche de la page.
    Si ton contrôle se trouve dans une couche plus "profonde" (comme ici ta table) il ne va pas le trouver.

    Il faut que tu procèdes en 2 étapes:
    d'abord récupérer ton tableau, puis récupérer ta textbox dans le tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Table uneTable = (Table)page.FindControl("TableID");
    TextBox uneTextBox = (TextBox)uneTable.FindControl("TextBoxID")

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Par défaut
    Je ne crois pas qu'il y ait besoin de récupérer le tableau vu qu'il appartient directement à la page, mais sinon c'est ça
    Je l'utilise avec un PlaceHolder dans lequel j'ai des contrôles et ca me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TextBox recupTextBox = new TextBox();
    recupTextBox = (TextBox)phListe.FindControl("txt" + idLien);
    Et donc dans le cas cité, ça devrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ans[i-1].Entitled = ((System.Web.UI.WebControls.TextBox)monControle.FindControl("txt_reponse"+i.ToString())).Text;

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Par défaut
    Citation Envoyé par casiii Voir le message
    Je ne crois pas qu'il y ait besoin de récupérer le tableau vu qu'il appartient directement à la page, mais sinon c'est ça
    Je l'utilise avec un PlaceHolder dans lequel j'ai des contrôles et ca me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TextBox recupTextBox = new TextBox();
    recupTextBox = (TextBox)phListe.FindControl("txt" + idLien);
    Et donc dans le cas cité, ça devrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ans[i-1].Entitled = ((System.Web.UI.WebControls.TextBox)monControle.FindControl("txt_reponse"+i.ToString())).Text;
    eh oui t'as raison, enfin ça marche?
    Merci beaucoup

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

Discussions similaires

  1. problème avec findControl
    Par julien.63 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/04/2009, 09h55
  2. Réponses: 1
    Dernier message: 31/08/2006, 11h48
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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