begin process at 2010 02 10 17:26:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive ASP & ASP.NET

 > 

Archives ASP & ASP.NET

 > 

ASP.net

 > 

[ASP.NET][C#] récupérer un événement click d'un custom web control


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[ASP.NET][C#] récupérer un événement click d'un custom web control

mardi 7 mars 2006 à 09:16:47 | [ASP.NET][C#] récupérer un événement click d'un custom web control

outcast_fr

Bonjour,
j'ai créé un petit custom web control (pas de user control) composé d'un label et d'un bouton.
Mon but c'est de récupérer l'événement associé au bouton.
J'ai donc suivi un tutoriel, mais sans réel succès.

Voici le code :

Code:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Drawing;

namespace EAC_WebControls
{
   /// <summary>
    /// Summary description for EAC_WebControls.
   /// </summary>
   [DefaultProperty("Text"),
    ToolboxData("<{0}:HeadWebPage runat=server></{0}:HeadWebPage>")]
   public class HeadWebPage : System.Web.UI.WebControls.WebControl
   {
      private string text;
        private Button myButton = new Button();


        [Bindable(true),
        Category("Attributs WebControl"),
        Description("Texte de définition."),
        DefaultValue("")]
        public string Text
        {
            get
            {
                return text;
            }

            set
            {
                text = value;
            }
        }


        //-----------------------------------------------------------------------
        //Déclaration des délégués
        public delegate void ValidButtonClickHandler(object sender, EventArgs e);

        //Déclaration des événements qui  utilisent ces délégués
        [Category("Action"),
        Browsable(true),
        Description("Evénement associé au bouton de validation.")]
        public event ValidButtonClickHandler BoutonValidClick;


        public virtual void OnValidButtonClick(EventArgs e)
        {
            if (BoutonValidClick != null)
            {
                BoutonValidClick(this, e);
            }
        }


        public void ButtonValid_Click(object sender, EventArgs e)
        {
            OnValidButtonClick(e);
        }
        //-----------------------------------------------------------------------


      /// <summary>
      /// Render this control to the output parameter specified.
      /// </summary>
      /// <param name="output"> The HTML writer to write out to </param>
      protected override void Render(HtmlTextWriter output)
      {
            Text += "Champ Texte : ";
         output.Write(Text);

            myButton.Text = "WebControl";
            myButton.RenderControl(output);
      }
   }
}


Après dans une page ASP.NET sur l'événement click du bouton je mets ceci :
Code:
Response.Write("<script>alert(\"Bouton cliqué !\");</script>");


Mais ça ne marche pas Crying or Very sad et je ne vois vraiment pas pourquoi.
Donc si vous pouvez m'aider ... ce serait cool Very Happy
Merci.
mardi 7 mars 2006 à 12:30:32 | Re : [ASP.NET][C#] récupérer un événement click d'un custom web control

outcast_fr

Réponse acceptée !
Bonjour,
Bon finalement j'ai trouvé la solution à mon problème grâce à ce topic (voir l'avant dernière réponse) :
[ Lien ]

Bon je n'ai pas compris pourquoi ça marchait, mais l'essentiel, c'est que ça fonctionne bien.

Il faut donc implémenter l'interace System.Web.UI.INamingContainer .
Le code fonctionnel est donc celui-ci :

Code:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Drawing;

namespace EAC_WebControls
{
    /// <summary>
    /// Summary description for EAC_WebControls.
    /// </summary>
    [DefaultProperty("Text"),
    ToolboxData("<{0}:TestBouton runat=server></{0}:TestBouton>")]
    public class TestBouton : System.Web.UI.WebControls.WebControl, System.Web.UI.INamingContainer
    {
        private string _Text = "Champ Texte : ";
        private Button myButton = new Button();

       
        public override ControlCollection Controls
        {
            get
            {
                EnsureChildControls();
                return base.Controls;
            }
        }

        protected override void CreateChildControls()
        {
            Controls.Clear();
            //myButton = new Button();
            //myButton.ID = "blah";
            //myButton.Text = TexteBouton;
            myButton.Click += new EventHandler(ButtonValid_Click);
            this.Controls.Add(myButton);
        }



        [Bindable(true),
        Category("Attributs WebControl"),
        Description("Texte du Label."),
        DefaultValue("")]
        public string TexteLabel
        {
            get { return _Text; }
            set { _Text = value; }
        }


        //-----------------------------------------------------------------------
        //Déclaration des délégués
        public delegate void ValidButtonClickHandler(object sender, EventArgs e);
       
        //Déclaration des événements qui  utilisent ces délégués
        [Category("Action"),
        Browsable(true),
        Description("Evénement associé au bouton de validation.")]
        public event EventHandler Click;


        public void OnClick(EventArgs e)
        {
            EventHandler click = Click;
            if (click != null)
            {
                click(this, e);
            }
        }
       

        public void ButtonValid_Click(object sender, EventArgs e)
        {
            this.OnClick(e);
        }
        //-----------------------------------------------------------------------


        /// <summary>
        /// Render this control to the output parameter specified.
        /// </summary>
        /// <param name="output"> The HTML writer to write out to </param>
        protected override void Render(HtmlTextWriter output)
        {
            output.Write(TexteLabel);

            myButton.Text = "Mon bouton";
            myButton.RenderControl(output);
        }
    }
}



En espérant que cela pourra aider quelqu'un un jour ... Very Happy


Cette discussion est classée dans : public, text, web, system, control


Répondre à ce message

Sujets en rapport avec ce message

Control creer dynamiquement [ par alk ] Alors voila je declare un System.Web.UI.Controlsdans un fichier aspx.cs et je souhaite le voir apparaitre sur ma WebForms cependant je recois une erre [ASPX][C#] Héritage de System.Web.UI.Page [ par merrick ] bonjouralors voilà, j'ai voulu factoriser des pages qui avait un comportement commun.j'ai ainsi créer une classe abstraite classeMere.cs comme suit:Co Web user control dans un gridview, postback problème Container.DataItem [ par Leghvon ] Bonjour,Je dois dire d'habite je trouve en cherchant mais là ! je suis sur un os. Merci d'avance.Ma question est très simple j'ai un gridview où je pl Problème avec System.Web.Management.SqlServices.InstallSessionState / Utilisation des variables de Session [ par magikbanana ] Bonjour tout le monde,Ce que je souhairerai faire est tout simplement une gestion des utilisateurs (celle intégrée à ASP.Net/SQL) pour garder l'état d remplir une Bdd sql serveur a travers un formulaire Asp.net [ par maminos_ead ] Salut a tous; j'ai crée une base de donnée avec sql server a travers Visual Studio 2005 et un formulaire dans une page.aspx mais mon probelme est le Échec du chargement de viewstate [ par titimzora ] bonjour tout le monde,voilà un message qui s'affiche qd j'essaye d'ouvrir ma page web je comprend pas d'où vient l'erreur alors que j'ai rien toucher Probléme procédure stockée+asp.net [ par gourou00 ] Bonjour, Je demande votre aide pour une erreur que j arrive pas à résoudre, alors j ai utilisé une procédure stockée pour insérer les données saisies Ajouter dynamiquement un UserControl [ par Carrillon ] Bonjour à tous, Lorsque j'execute mon programme, j'ai l'erreur suivante 'La référence d'objet n'est pas définie à une instance d'un objet.' lorsque j ajax et son slideshow [ par volcom20 ] je tente de faire un slideshow pour une site web dans un projet d'école mais jarrive pas à faire marcher mon service web je tente de régler le problèm Pb "TagName" et "Assembly" [ par helleringer ] Bonjour à tous, Je suis très novice dans ce monde de programmation en ASP. Néanmoins, j'ai un gros soucis avec un site d'un ami que j'ai transféré v


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales