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 :

appeler ma UserControl avec une LinkButton


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Par défaut appeler ma UserControl avec une LinkButton
    bonjour,
    comme le titre le montre,
    j'ai un usercontrol que je peux appeler sur la page avec tel code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <uc_ajout:ajout id="ajout" runat="server" ></uc_ajout:ajout>
    sauf que je moi je veux pas qu'il s'affiche au demarrage de la page,
    mais en l'appelant avec ma linkbutton !!!


    voici ce que j'ai essayé avec "Onclik " :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      protected void LinkButton1_Click(object sender, EventArgs e)
        {
            HtmlGenericControl p_usercontrol;
     
            p_usercontrol = (HtmlGenericControl)Page.FindControl(" p_accueil");
            p_usercontrol.InnerHtml = "<uc_ajout:ajout id=" + "\"" + "ajout" + "\"" + "  " + "runat=" + "\"" + "server" + "\"" + "></uc_ajout:ajout>";
     
     
     
     
        }

    mais ca donne rien,
    merci d'avance pour votre aide

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    regarde de ce coté là peut être
    http://dotnet.developpez.com/faq/asp...outercontroles
    http://dotnet.developpez.com/faq/asp...ls#dynUCAccess

    ou une autre possibilité le cacher à l'initialisation (visible à false) et le rendre visible quand tu clique sur ton linkbutton

  3. #3
    Membre éclairé
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Par défaut
    bonjour,

    j'arrive a l'ajouter avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            UserControl uc = (UserControl)Page.LoadControl("ajout.ascx");
     
            p_accueil.Controls.Add(uc);
     
     
        }

    sauf que les bouton du Usercontrol perdent leur évènement clique.
    c'est a dire quand tu clique sur un bouton il se passe rien .
    l'evenement clique du bouton ne se delenche pas
    !!!!!!!!

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Est-ce que tu le cast avec le bon type? (est-ce que tu es sur que c'est un user control et pas un usercontrol_ajout) pour ça regarde le nom de ta classe de ton user control.
    Ton événement est géré au niveau de ton user control ou au niveau de la page où tu l'ajoutes?

  5. #5
    Membre éclairé
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Par défaut
    bonjour,
    je vien de verifier tout ça ,mais ca marche pas.

    les bouton son au niveau du Usercontrol .

    j'ai essayé ça dans le Usercontrol pour refaire le cablage entre le bouton et le clique :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      protected void Page_Load(object sender, EventArgs e)
        {
     
            this.Button1.Click += new System.EventHandler(this.Button1_Click); 
     
        }
    mais ca donne toujours rien !!!

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Bonjour,

    as-tu suivi les conseil de youtpout978 ? Tu ne donnes en effet pas le bon type à ton contrôle.
    Si ce dernier s'appelle "ajout", alors tu dois procéder comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protected void LinkButton1_Click(object sender, EventArgs e)
        {
            ajout uc = (ajout)Page.LoadControl("ajout.ascx");
            this.Controls.Add(uc);
        }

  7. #7
    Membre éclairé
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Par défaut
    je viens de suivre votre conseil ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            ajout uc = (ajout)Page.LoadControl("ajout.ascx");
     
            p_accueil.Controls.Add(uc);
     
     
        }
    il ajoute mais,j'ai toujours le porbleme de perte de l'evenement clique pour le bouton de mon usercontrol !!!
    comme toute a l'heure !!

  8. #8
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    l'abonnement à ton événement se fait dans l'usercontrol ou dans ta page si c'est dans ta page il faut que tu t'abonnes dessus après avoir créer ton usercontrol où l'avoir affiché
    attention à vérifier que c'est pas un rappel de ta page sinon le code est exécuté à chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void Page_Load(object sender, EventArgs e)
        {
     if(!Page.IsPostBack)
    {
            this.Button1.Click += new System.EventHandler(this.Button1_Click); 
     }
        }

  9. #9
    Membre éclairé
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Par défaut
    le bouton existe dans mon usercontrol ,
    donc si je fait le code que vous m'avez proposé dans la page il sera pas pris en considération ,
    car il connaitera le bouton .


    et si je le mets dans l'usercontrol ,ca m'aide pas :s :s !!!

  10. #10
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    je te demandai si l'événement est traité dans ton user control où dans la page qui le charge?

  11. #11
    Membre éclairé
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Par défaut
    le traitement se fait dans le usercontrol .
    la page n'est enfait qu'un conteneur de mes UserControl .
    voici le code de mon boutonclik dans l'userControl (qui doit etre executé normalement aprés clique sur le bouton) :

    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
     
     
     protected void Button1_Click(object sender, EventArgs e)
        {
            string test = Session["id_user"].ToString();
            try
            {
                obj.ajout_heure(Convert.ToInt32(Session["id_user"].ToString()), Convert.ToDateTime(TextBox1.Value), TextArea1.InnerText.ToString(), Convert.ToInt32(TextBox2.Text));
                Response.Write("<body>");
                Response.Write("<h1><SCRIPT language=javascript>alert('ajout avec succé');</SCRIPT></h1>  ");
                Response.Write("<body>");
            }
            catch
            {   Response.Write("<body>");
                Response.Write("<h1><SCRIPT language=javascript>alert('erreur ,merci de ressayer');</SCRIPT></h1>  ");
                Response.Write("<body>");
            }
     
     
        }

  12. #12
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Ce code marchait quant tu rajoutais le controle manuellement et non dynamiquement?
    Met un point d'arrêt dans ta fonction pour voire si tu rentres bien dedans ?
    Je peux voir le code du button (la balise asp)

  13. #13
    Membre éclairé
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Par défaut
    j'vais déjà tester avec les point d’arrêt dans a fonction,
    malheureusement il ne rentre pas .

    voici le code asp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
                  Text="Ajouter"   Width="128px"  />


    d’ailleurs c'est ce que j'aimerai comprendre ,pourquoi il rentre pas dans la methode .

    ps: c'est le code de mon usercontrol

  14. #14
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    ça devrait fonctionner est-ce que dans ton code tu aurais pas:
    ou
    ce qui expliquerait pourquoi ton bouton n'est pas abonné à ton événement

  15. #15
    Membre éclairé
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Par défaut
    oui,effectivement.
    je l'ai mis pour forcer le cablage :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    protected void Page_Load(object sender, EventArgs e)
        {
     
            this.Button1.Click += new System.EventHandler(this.Button1_Click); 
     
        }
    de toute façon ca ne marche ni avec ni sans !

    je doit pas le mettre !!!??

  16. #16
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    tu n'as pas besoin de le forcer (normalement) à partir du moment que tu l'a déclaré dans la balise ASP, tu peux mettre le code complet de ton user control que je test ?

  17. #17
    Membre éclairé
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Par défaut
    code de la class :

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Blogic;
     
    public partial class ajout : System.Web.UI.UserControl
    {
        Blogic.bll obj = new bll();
     
        protected void Page_Load(object sender, EventArgs e)
        {
     
     
     
        }
        protected void Page_Init(object sender, EventArgs e)
        {
     
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
     
        }
     
        protected void Button1_Click(object sender, EventArgs e)
        {
     
     
            string test = Session["id_user"].ToString();
            try
            {
     
                // ici tu peux mettre   autre chose que cette methode ,pour tester
                obj.ajout_heure(Convert.ToInt32(Session["id_user"].ToString()), Convert.ToDateTime(TextBox1.Value), TextArea1.InnerText.ToString(), Convert.ToInt32(TextBox2.Text));
     
                Response.Write("<body>");
                Response.Write("<h1><SCRIPT language=javascript>alert('ajout avec succé');</SCRIPT></h1>  ");
                Response.Write("<body>");
     
            }
            catch
            {
     
                Response.Write("<body>");
                Response.Write("<h1><SCRIPT language=javascript>alert('erreur ,merci de ressayer');</SCRIPT></h1>  ");
                Response.Write("<body>");
            }
     
     
        }
     
     
    }
    code de la page :

    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
     
     
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="ajout.ascx.cs" Inherits="ajout" %>
     
    <style type="text/css">
     
        .style4
        {
            width: 161px;
        }
     
     
        .style3
        {
            color: #000066;
            text-decoration: underline;
        }
        .style5
        {
            color: #000066;
            text-decoration: underline;
            width: 161px;
        }
        #TextArea1
        {
            height: 133px;
            width: 332px;
        }
     
     
        </style>
     
    <script src="Scripts/calendrier.js" type="text/javascript"></script>
    <link href="design.css" rel="stylesheet" type="text/css" />
     
     
          <table style="height: 351px; width: 489px">
          <tr><td class="style4"> <strong><span class="style3"><em>Entrer la Date:</em></span>
              </strong>
              </td><td>
                  <input id="TextBox1" type="text" runat="server" onclick="ds_sh(this);"  /></td><td>
     
                     <table class="ds_box" cellpadding="0" cellspacing="0" id="ds_conclass" style="display: none;">
    			<tr>
    				<td id="ds_calclass"></td>
    			</tr>
    		</table>
     
                  </td></tr>
          <tr><td class="style4"><span class="style3"><strong><em>Nombre d'heure supplémentaires</em></strong></span> </td><td><asp:TextBox ID="TextBox2" runat="server"/></td></tr>
          <tr><td class="style5">
              <em><strong>Commentaire
          </strong></em>
          </td><td>
                  <textarea id="TextArea1" name="S1" runat="server" cols="20" rows="1"></textarea></td></tr>
          <tr><td class="style4"></td><td>
              <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
                  Text="Ajouter"   Width="128px"  />
              </td></tr>
     
          </table>

    merci

  18. #18
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    il semble que ça vienne de l'ajout dynamique du contrôle jai testé en l'ajoutant manuellement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ac:ajout id="ajout" runat="server" Visible="false"/>
    je l'affiche quand je clique sur le linkbutton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protected void LinkButton1_Click(object sender, EventArgs e)
        {
            ajout.Visible = true;
     
        }
    et là l'événement est bien appelé (pas besoin de recréer l'abonnement dans le page_init aussi)

  19. #19
    Membre éclairé
    Homme Profil pro
    consultant java
    Inscrit en
    Août 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 325
    Par défaut
    justement ,c ça le problème.
    je veux pas le faire avec les "visible non visible" je veux l'ajouter dynamiquement !!!!

  20. #20
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    il semble que quand tu cliques sur ton bouton l'usercontrol est supprimé au rappel de la page, je sais pas d'où vient le problème et comment le régler

Discussions similaires

  1. appel de fonction avec une chaine en paramètre
    Par sebac dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/01/2012, 15h59
  2. Appeller un webservice avec une pièce jointe
    Par mixi dans le forum Web & réseau
    Réponses: 5
    Dernier message: 25/09/2009, 14h18
  3. [Débutant]Appeler un UserControl dans une Form
    Par Shr3ck dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/03/2009, 14h14

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