He creado un control de usuario que contiene un botón y un par de otros controles.

Cuando la declaración de mi control de usuario en el marcado html que me gustaría hacer algún tipo de :

<asp:CustomControl onclick="CustomControl_Click" ID="cc1" runat="server"> 

Donde CustomControl_Click es, obviamente, la acción quiero llamar cuando el control del botón es pulsado.

Tan lejos en mi control que tengo:

public event EventHandler Click;

    protected void Button1_Click(object sender, EventArgs e)
    {
        Click.Invoke(sender, e);
    }

pero, ¿cómo puedo adelante el Eventhandler de la página principal para asignar a la haga Clic en Eventhandler en mi control?

Cualquier ayuda es realmente apreciado!

PS: tal vez hay una forma de llegar al método desde la página de alojamiento mediante la reflexión

InformationsquelleAutor teebot | 2009-06-10

2 Comentarios

  1. 5

    Estoy usando un botón personalizado (en realidad, html div con LinkButton incrustado en él). Aquí está el código de la misma:

        public delegate void ClickEventHandler(object sender, EventArgs e);
        public event ClickEventHandler Click =  delegate { };
    
        public string Text
        {
            get { return cmdLink.Text; }
            set { cmdLink.Text = value; }
        }
    
        public bool CausesValidation
        {
            get { return cmdLink.CausesValidation; }
            set { cmdLink.CausesValidation = value; }
        }
    
        public string OnClientClick
        {
            get { return cmdLink.OnClientClick; }
            set { cmdLink.OnClientClick = value; }
        }
    
        public string CssClass
        {
            get { return cmdLink.CssClass; }
            set { cmdLink.CssClass = value; }
        }
    
        protected void cmdLink_Click(object sender, EventArgs e)
        {
            Click(this, e);
        }

    Aquí es de uso en la página aspx:

    <Button_Control:ButtonControl ID="btnSave" runat="server" Text="Save" 
              OnClick="btnSaveClick" />

    y esto es en la página de código subyacente de la página aspx:

        protected void btnSaveClick(object sender, EventArgs e)
        {
            //do stuff here
        }
    • Pero Aún ¿cómo mapa «OnClick=»btnSaveClick» a la ClickEventHandler haga Clic en ??
    • Supongo que es una convención, entonces? Muchas gracias por tu respuesta!
    • Usted tiene que escribir OnClick=»btnSaveClick» y escribir el método de controlador de eventos en su página de código subyacente. Es llamado por el control del evento Click.
  2. 0

    La he encontrado!

    Lugar de utilizar la propagación de los eventos que uso el reflejo en el haga clic en eventhandler de control de usuario, así que tengo :

    public string OnClick;
    
        protected void Button1_Click(object sender, EventArgs e)
        {
            MethodInfo methodInfo = this.Page.GetType().GetMethod(OnClick);
            methodInfo.Invoke(this.Page, new object[]{ sender, e });
        }

    Y funciona con declarar que el control de usuario como :

    <asp:CustomControl OnClick="CustomControl_Click" ID="cc1" runat="server">
    • Es la reflexión no la reflexión y a los delegados y a los controladores de eventos acaba de hacer eso automáticamente por usted!

Dejar respuesta

Please enter your comment!
Please enter your name here