Domanda

Sto cercando di generare un evento clic dal controllo utente e gestirlo nella pagina contenente. Il problema che ho è, quando faccio clic sul pulsante 'imgstep1' sul controllo utente, il codice dietro l'evento imgstep1_click si attiva e ma l'evento 'btnHandler' è sempre nullo. Quindi non chiama l'evento genitore.

Qualsiasi aiuto su questo sarà molto apprezzato.

Il mio codice di controllo utente è:

.ascx code:

<asp:ImageButton ImageUrl="./images/step1.gif" 
        ID="imgstep1" runat="server" 
         OnClick="imgstep1_Click"/>

.ascx.cs codice:

    public delegate void OnImageButtonClick();
    public event OnImageButtonClick btnHandler;

    protected void imgstep1_Click(object sender, ImageClickEventArgs e)
    {
        if (btnHandler != null)
            btnHandler();
    }

Codice pagina aspx:

protected void Page_Load(object sender, EventArgs e)
{
     ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler);
}

void ucStepHdr_btnHandler()
{
  Response.Write ('test');
}
È stato utile?

Soluzione

Il codice sembra abbastanza semplice da funzionare correttamente. L'unico motivo per cui btnHandler è null potrebbe essere perché non viene chiamato il codice di registrazione dell'evento nella pagina aspx.

C'è un post indietro? Sei sicuro di aggiungere l'evento OGNI VOLTA che la pagina si carica ???

ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler);

Altri suggerimenti

Se rimuovi OnClick = " imgstep1_Click " e lo inserisci in ascx.cs

protected ImageButton imgstep1;

protected override void OnInit(EventArgs e)
{
    this.imgstep1.Click += new ImageClickEventHandler(imgstep1_Click);
}

Questo metodo di cablaggio dell'evento funziona?

Sembra che dovrebbe funzionare ... puoi scorrere il codice nel debugger e vedere qual è il valore di ucStepHdr.btnHandler non appena lo imposti in Page_Load? (Solo a parte, tradizionalmente questi sono impostati in init piuttosto che in caricamento, ma questo non è un tuo problema.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top