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 :

Insérer un composant utilisateur par code


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 Insérer un composant utilisateur par code
    Salut

    J'ai fabriqué un composant utilisteur qui marche bien. Pour l'instant je le place dans ma page de manière classique, avec une balise @Register et une balise html de type <uc3:

    Et là, tout fonctionne bien.

    Maintenant je voudrais changer ça et faire cette insertion par le codeBehind. Mais dés que je fais ça il me dit que
    La référence d'objet n'est pas définie à une instance d'un objet.
    Et il pointe sur une ligne du CodeBehind du composant, la première où je fais une insertion de control dans la table que j'ai déclaré en HTML dans mon composant.
    Je vais mettre un peu de code pour illustrer.
    Voici mon CodeBehind de ma page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    		Dim troupage As HtmlForm
    		troupage = Page.Controls(0).FindControl("form1")
    		Dim forminscrip As New jemprunte_Inscription
    		forminscrip.Mode = "inscription"
    		troupage.FindControl("cphCentral").Controls.Add(forminscrip)
    	End Sub
    Et le code HTML de la même page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <asp:Content ID="Content1" ContentPlaceHolderID="cphMenuGauche" Runat="Server">
    	<uc1:MenuGaucheGlobal ID="MenuGaucheGlobal1" runat="server" />
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="cphCentral" Runat="Server">
     
    </asp:Content>
    Puis le code HTML du composant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <%@ Control Language="VB" AutoEventWireup="false" CodeFile="Inscription.ascx.vb" Inherits="jemprunte_Inscription" %>
    <script type='text/javascript'> 
    	var tbCity_ClientItemSelected = function(sender, e){		$get('<%=hfVille.ClientID %>').value = e.get_value(); }	
    	var tbNaiss_ClientItemSelected = function(sender, e){		$get('<%=hfNaiss.ClientID %>').value = e.get_value(); }
    </script>
    <asp:TextBox ID="hfVille" runat="server" CssClass="invi"></asp:TextBox>
    <asp:TextBox ID="hfNaiss" runat="server" CssClass="invi"></asp:TextBox>
    <asp:Table ID="tblGene" runat="server"></asp:Table>
    Puis la partie du code Behind concernée par l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim ro, roErr As New TableRow
    [...]
    tblGene.Rows.Add(ro)
    Entre ces deux lignes, je prépare plein de truc pour remplir mes cellules de tables, mais visiblement, c'est aps ça qui le dérange, c'est latable, il la trouve pas alors qu'elle est dans le HTML.
    J'ai tout de même essayé de la mettre dans le codeBehind, amis ça dvint la grosse mouise avec le reste du code et surtout le Script.

    Pouvez vous m'aider ?

  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
    tblGene n'est pas connu dans ta page

  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
    Ben oui, puisque c'est dans mon composant.
    Le message d'erreur porte bien sur une ligne de mon composant, précisément la ligne que j'ai mis dans mon dernier encart de code.

    Mais je comprends pas pourquoi ça marche quand je fais l'insertion du composant par le HTML et ça marche plus quand je le fais par code. Est ce que cela ne viendrais pas de l'ordre de création des éléments ?
    Parce que je place mon composant dans la page sur le Page_Load et mon composant fabrique ses éléments dans le Page_Init

    Et enfin, tblGene n'est pas connu dans ma page, alors comment le faire connaitre ? Surtout que je ne souhaite pas qu'il soit directement dans la page, mais bien dans le composant. C'est le composant qui a besoins d'être fabriquer dans cette table.

    Merci pour ton aide.

  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
    C'est dans le code behind du composant ça?

  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, vu que la table est déclarée dans le HTML du composant.

  6. #6
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Bonjour,

    C'est pas un peu trop dynamique tout ça ?

    Il me semble que ton composant ajouté à la volée dans le Page_Load de la page n'est pas "rendu" avant la fin de l'évènement, donc son contenu n'existe pas .

    A la rigueur essai de déclarer une méthode protégée qui génère le tableau dans ton composant et tu appeles cette méthode dans le Pre_Render de ta page par exemple

    A suivre

Discussions similaires

  1. Créer un utilisateur par code
    Par zooffy dans le forum ASP.NET
    Réponses: 6
    Dernier message: 15/04/2008, 12h32
  2. Réponses: 5
    Dernier message: 03/12/2007, 16h38
  3. ajouter un utilisateur au groupe users par code VBA ?
    Par electrosat03 dans le forum Access
    Réponses: 2
    Dernier message: 12/01/2007, 17h00
  4. PHP / MySQL : Création d'utilisateurs dans la DB par code PHP
    Par Sangdrax1604 dans le forum Administration
    Réponses: 6
    Dernier message: 07/09/2006, 17h46

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