Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Eventi in User Control

  1. #1

    Eventi in User Control

    Ciao a tutti, mi trovo in una situazione complicata, in un gridview, al click sulle varie righe, carico in un PlaceHolder l'user control corrispondente, ora, in ogni user control ho necessità di sollevare
    degli eventi ma, come sapete, essi non vengono sollevati poichè dovrei dichiararli e caricarli nell'evento Init della pagina per fare questo;io però non so a priori quale user control verrà caricato, quindi non so come fare per far sì che all'interno di ogni user control sia
    possibile scantenare eventi. Qualcuno ha un'idea? Grazie mille

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    :master:

    non ho ben capito...potresti postare un po' di codice ?

  3. #3
    Originariamente inviato da djciko
    :master:

    non ho ben capito...potresti postare un po' di codice ?
    Certo, nell'evento RowCommand del mio gridview, faccio questo:
    codice:
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    Control c1;
                    switch (indiceriga.ToString())
                    {
                        case "0":
                            {
                                c1 = LoadControl("WebUserControls/uc1.ascx");
                                PlaceHolder1.Controls.Add(c1);
                                break;
                            }
                        case "1":
                            {
                                c1 = LoadControl("WebUserControls/uc2.ascx");
                                PlaceHolder1.Controls.Add(c1);
                                break;
                            }
    ...........
    A questo punto, supponiamo che mi trovi nel caso "0", carico nel PlaceHolder1 l'uc1.ascx, in uc1.ascx ho un Button alla pressione del quale devo scatenare un evento (Click) che mi sostituisca uc1.aspx con, ad asempio, uc30.ascx. Il problema è che l'evento click non viene generato, ho provato a mettere un breck point e non ci passa.
    Ho letto che gli User Control generati dinamicamente devono essere "rigenerati" nell'Init della pagina, il problema è che non so a priori quale User Control devo rigenerare perchè dipenda dalla riga selezionata dall'utente.
    Thanks

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Non puoi salvare l'indice della riga alla prima generazione e riusarlo nel Page_Init ?


    Comunque, per 'rilevare' un evento scatenato da un controllo utente ospitato in una pagina la prassi è questa (da inserire all'interno dello User Control):

    codice:
       Public Event UC_Click(ByVal sender As Object, ByVal e As EventArgs)
       
        Private Sub Bottone_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bottone.Click
            RaiseEvent UC_Click(Me, e)
        End Sub

    Nella pagina ospitante, invece :
    codice:
    Protected WithEvents ClasseUserControl As New NomeClasseUserControl
    .
    .
    Private Sub ClasseUserControl_UC_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ClasseUserControl.UC_Click
     ' qui prendi il click del bottone dello usercontrol
    End Sub

  5. #5
    Originariamente inviato da djciko
    Non puoi salvare l'indice della riga alla prima generazione e riusarlo nel Page_Init ?


    Comunque, per 'rilevare' un evento scatenato da un controllo utente ospitato in una pagina la prassi è questa (da inserire all'interno dello User Control):

    codice:
       Public Event UC_Click(ByVal sender As Object, ByVal e As EventArgs)
       
        Private Sub Bottone_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bottone.Click
            RaiseEvent UC_Click(Me, e)
        End Sub

    Nella pagina ospitante, invece :
    codice:
    Protected WithEvents ClasseUserControl As New NomeClasseUserControl
    .
    .
    Private Sub ClasseUserControl_UC_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ClasseUserControl.UC_Click
     ' qui prendi il click del bottone dello usercontrol
    End Sub
    Ti ringrazio molto, come verrebbe in C#?

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    dovrebbe essere:

    codice:
    public event UC_ClickEventHandler UC_Click;
    
    private void Bottone_Click(object sender, System.EventArgs e)
    {
     if (UC_Click != null) {
       UC_Click(this, e);
     }
    }
    
    
    e
    
    
    protected NomeClasseUserControl ClasseUserControl = new NomeClasseUserControl();
    
    private void ClasseUserControl_UC_Click(object sender, System.EventArgs e)
    {
    }

  7. #7
    Però il nome della classe del mio mio user control è:
    public partial class WebUserControl : System.Web.UI.UserControl
    {}
    quale devo usare?

  8. #8

  9. #9
    Originariamente inviato da djciko
    WebUserControl
    Ma non me la vede questa classe nel code behind della mia pagina aspx.....

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887


    Credo sia perchè il controllo non è registrato esplicitamente sulla pagina.
    Mi spiace ma non sono molto esperto del FW2.0 ... ti chiarivo soltanto le idee in generale su come far vedere un evento dal di fuori.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.