Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Associare sub a controlli dinamici

    Ciao a tutti...sapreste dirmi come posso associare una funzione ad un controllo che creo dinamicamente?
    Per essere più precisi, recupero i dati del controllo (nome, tipo ecc) da un database. il controllo in questione è un pulsante. Non ho idea di come associare un "OnClick" lato server al pulsante in questione per lanciare una sub. Non intendo "OnClick" di JavaScript perchè quello lo so fare, ma non mi serve al momento. Mi serve l'evento lato server.
    Grazie a chi mi saprà dire qualcosa.

  2. #2
    la sintassi è questa:
    codice:
    Oggetto.Evento += new System.EventHandler(Funzione);
    poi la funzione dovrà accettare i parametri che si aspetta l'evento.

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    supponendo di creare un DropDownList di nome List,
    codice:
    AddHandler List.SelectedIndexChanged, AddressOf SelectedIndexChanged
    dove, la funzione SelectedIndexChanged deve avere la giusta firma:
    codice:
    Privat Sub SelectedIndexChanged(Byval Sender as Object, ByVal e as System.EventArs) ...

  4. #4
    ok, ho usato AddHandler, ma utilizzando AddressOf, devo obbligatoriamente utilizzare una Sub che abbia come parametri di ingresso l'object e l'event? Non posso associare una funzione xyz a cui passo dei parametri?
    qualcosa del tipo

    AddHandler btn.Click, AddressOf miaSub(param1, param2)

    che ovviamente non funziona...

  5. #5
    Originariamente inviato da DeBe99
    la sintassi è questa:
    codice:
    Oggetto.Evento += new System.EventHandler(Funzione);
    poi la funzione dovrà accettare i parametri che si aspetta l'evento.

    Non capisco "Oggetto.Evento".
    supponendo che il mio oggetto si chiami btn1 (creato con
    codice:
    Dim btn1 As New System.Web.UI.WebControls.Button()
    giusto poche righe prima), utilizzando la notazione puntata e VS.NET, non mi vengono restituiti gli eventi associati...

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti mando un esempio in vb.net (la conversione in c# la fai tu).
    Nella pagina *.aspx metti un PlaceHolder nel punto in cui vuoi mettere i controlli creati dinamicamente:
    codice:
    <form id="Form1" method="post" runat="server">
    	<asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </form>
    Nel Codebehind:
    codice:
    Private Function GetForm() As HtmlForm
    	Return CType(Me.FindControl("Form1"), HtmlForm)
    End Function
    
    Private Function GetLabel() As Label
    	Return CType(Me.FindControl("lbl1"), Label)
    End Function
    
    Private Function GetTextBox() As TextBox
    	Return CType(Me.FindControl("tb1"), TextBox)
    End Function
    
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    	This = Me
    	PrintLn("Page_Load")
    	Dim tb As New TextBox()
    	tb.ID = "tb1"
    	tb.Text = "Scrivi qualcosa"
    	Me.PlaceHolder1.Controls.Add(tb)
    
    	Me.PlaceHolder1.Controls.Add(New LiteralControl("
    "))
    
    	Dim btn As New Button()
    	btn.Text = "Spedisci"
    	Me.PlaceHolder1.Controls.Add(btn)
    	AddHandler btn.Click, AddressOf btn1_click
    
    
    	Me.PlaceHolder1.Controls.Add(New LiteralControl("
    "))
    
    	Dim lbl As New Label()
    	lbl.ID = "lbl1"
    	Me.PlaceHolder1.Controls.Add(lbl)
    
    End Sub
    Private Sub btn1_click(ByVal Sender As Object, ByVal e As System.EventArgs)
    	PrintLn("btn1_click")
    	GetLabel().Text = "Mi hai chiamato, finalmente!
    Mi hai spedito: " & Me.GetTextBox().Text
    End Sub

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 © 2026 vBulletin Solutions, Inc. All rights reserved.