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 :

Comment trouver un contrôle par concaténation ?


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut Comment trouver un contrôle par concaténation ?
    Bonjour,

    Comment trouver un contrôle serveur d'un ID construit par la concaténation ?

    J'ai fait ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for (int i = 0; i < 5; i++)
    			{
                    WebUserControl x = (WebUserControl)Form.FindControl("Produit" + i.ToString());
                    if (x.type=="Nouveau")
    	            {
                        .........
     
    	            }			    
    			}
    Mais l'erreur suivant s'affiche:
    Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
    Merci.

  2. #2
    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
    il faut faire un as . avec as tu peux tester si ca te renvoie null.

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    J'ai pas bien compris votre aide, mais j'ai fait quand même:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     WebUserControl x = Form.FindControl("Produit" + i.ToString()) as WebUserControl;
    mais, même erreur s'affiche.

  4. #4
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 174
    Par défaut
    i a bien une valeur ?

  5. #5
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    Oui, bien sûr, la veleur de i c'est celle de la boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for (int i = 0; i < 5; i++)

  6. #6
    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
    il faut tester si x == null comme ca ton code ne plante plus.

  7. #7
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    L'application ne plante pas, mais le contrôle x n'est pas trouvé sachant que j'ai au moins Produit1.
    Lorsque je fais débogage pas à pas, le code donne null pour x
    Je ne sais pas pourquoi

  8. #8
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Ta boucle commence à 0, tu as un produit avec un ID "Produit0"?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  9. #9
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    Oui, bien sûr, j'ai tous les contrôles

    Je pense que FindControl ne marche pas avec les contrôles personnalisés WebUserControl. Est-ce que vous avez d'acorrd avec moi ?

  10. #10
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Tu peux nous montrer comment tu ajoutes tes contrôles?
    "Winter is coming" (ma nouvelle page d'accueil)

  11. #11
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    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
     
    <asp:MultiView ID="MultiView0" runat="server" ActiveViewIndex="0">
     <asp:View ID="View0" runat="server">
      <uc1:WebUserControl ID="Produit0" runat="server" />
      <br />
     </asp:View>
    </asp:MultiView>
     
    <asp:MultiView ID="MultiView1" runat="server">
     <asp:View ID="View1" runat="server">
      <uc1:WebUserControl ID="Produit1" runat="server" />
      <br />
     </asp:View>
    </asp:MultiView>
     
    ......
    ....jusqu à 4....
    ......
     
    <asp:MultiView ID="MultiView4" runat="server">
     <asp:View ID="View4" runat="server">
      <uc1:WebUserControl ID="Produit4" runat="server" />
      <br />
     </asp:View>
    </asp:MultiView>
    J'ai inséré les contrôles webusercontrol dans des mutiview pour avoir la possibilté de les afficher ou masquer, sauf le premier qui est toujours affiché

  12. #12
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Bah! Si tu les ajoutes comme ça dans ton code, tu n'as pas besoin de les chercher...
    "Winter is coming" (ma nouvelle page d'accueil)

  13. #13
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    Je veux que la boucle ça marche.

    Pourquoi cette instruction donne x=null toujours ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WebUserControl x = (WebUserControl)Form.FindControl("Produit" + i.ToString());
    Est-ce que FindControl ne marche pas avec les contrôles WebUserControl ?

  14. #14
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    l'instruction FindControl n'est pas récursive. Le problème vient peut être de là..

  15. #15
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    Si FindControl n'est pas récursive, où est le problème ?

    L'instruction doit donner le contrôle cherché.

  16. #16
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Vois-tu les controles en question quand tu débug pas à pas? Si tu mes un point d'arrêt sur la ligne du FindControl, est que tes contrôles sont dans la liste des objets du formulaire?
    "Winter is coming" (ma nouvelle page d'accueil)

  17. #17
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    as tu essayé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WebUserControl x = (WebUserControl)Form.FindControl("Produit0");

    et sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WebUserControl x = (WebUserControl)View0.FindControl("Produit0");

  18. #18
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    Merci beaucoup pour vos aides et je m'excuse pour les points d'exclamation.

    J'ai enlevé tous les points d'exclamation dans ce discours, après avoir reçu un message d'un modérateur de ce forum.

    Je m'excuse encore.

  19. #19
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Je constate le même phénomène chez moi. J'utilise pas trop find contrôle...
    Citation Envoyé par Arthis Voir le message
    l'instruction FindControl n'est pas récursive. Le problème vient peut être de là..
    Arthis a raison. Voir ce post: http://www.west-wind.com/Weblog/posts/5127.aspx. L'auteur utilise une fonction récursive "maison" pour trouver ses contrôles. Il suffit de l'utiliser comme dans son exemple et ça marche.

    Il y a d'ailleurs une réponse dans la FAQ à ce sujet: http://dotnet.developpez.com/faq/asp...ivefindcontrol

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  20. #20
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    Merci.
    ça marche avec: View0.FindControl à la place de Form.FindControl.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment trouver les contrôles dans un DBCtrlGrid
    Par Bruno75 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 19/12/2010, 17h42
  2. [C#] Comment accéder à un contrôle par son nom ?
    Par km3l3on dans le forum Windows Forms
    Réponses: 4
    Dernier message: 01/06/2010, 19h34
  3. Réponses: 3
    Dernier message: 28/11/2009, 01h38
  4. Réponses: 2
    Dernier message: 21/09/2006, 09h41
  5. Réponses: 6
    Dernier message: 12/05/2006, 15h20

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