Linkbutton e click da codice

giovedì 11 agosto 2005 - 09.46

PEPE Profilo | Senior Member

Salve,
da code behind ho creato un webcontrol di tipo linkbutton in questo modo:

dim lnk1 as new linkbutton

Ho assegnato le proprieta al controllo:

lnk1.id="mioLink"
lnk1.Visible= True
ecc...

Ovviamente non c'e' l'opzione lnk1.Onclick. Quello che dovrei fare e' riuscire a create il linkbutton tramite code behind che con un click mi lancia una funzione. Insomma quello che tipicamente si fa se il controllo lo si crea nella pagina aspx.
Tra le proprietà del controllo ci sono due proprietà, commandname e commandargument che penso servano a fare questo lavoro.

Allora ho provato a mettere nel codebehind della pagina una funzione:

Protected sub lnk_Click(sender as object, e as eventargs)
end sub

Ho impostato il lnk1.CommandName= lnk_Click credendo che il controllo in fase di rendering riuscisse a capire che funzione richiamare. Purtroppo la mia prova non ha avuto buon successo :D:D.

Qualcuno sa darmi una mano?

Grazie 1000,
Luca.

LudovicoVan Profilo | Junior Member

L'utilizzo dei controlli dinamici non è proprio elementare. Puoi mostrare tutte le porzioni di code-behind coinvolte nella gestione del LinkButton, così vediamo dove può stare l'inghippo? -LV

(Peace X Love] = [1)

PEPE Profilo | Senior Member

fin ora non ho porzioni di codice. Essenzialmente sto cercando di fare un po di esperimenti che mi portrebbero essere utili anche per imparare come .net gestisce le cose.

Quello che generalmente faccio in una pagina aspx e' questo:

<asp:linkButton id="lnk1" runat=server onclick="lnk1_Click">CLICCA</asp:linkButton>
<br>
<asp:label id=lblMessage runat=server></asp:label>

nel code behind faccio questo:

Protected sub lnk1_Clcik(byval s as object, byval e as eventargs)
lblmessage.text="CIAO!! PROVA OK"
End sub

Ora quello che volevo tentare di fare e' inserire un controllo linkbutton in una pagina e cercare di fargli eseguire del codice quando clicco.
Esempio codebehind

page_load...
dim lnk as new linkbutton
lnk.text= "CLICCA"
lnk.id="lnk1"
lnk.Visible=true
lnk.CommandName= "lnk1_Click"
form.controls.add(lnk) -non so manco se si puo' fare ma e' tanto per far capire il concetto-

Protected sub lnk1_Clcik(byval s as object, byval e as eventargs)
lblmessage.text="CIAO!! PROVA OK"
End sub


Ho provato ad eseguire, ma quando clicco non accade nulla. Io speravo che impostando il commandname sul nome del metodo da eseguire, .net capisse tutto e facesse tutto lui :D:D. Purtoppo non e' cosi' oppure bisogna fare dei passaggi in più.
Su internet e su msdn non ho trovato molte informazioni circa questa problematica cosi' non mi resta altro da fare che sperare che qualcuno sia gia' riuscito ad ottenere questo risultato o che sappia come fare :).

Ciao,
Luca.


LudovicoVan Profilo | Junior Member

>page_load...
>dim lnk as new linkbutton
>lnk.text= "CLICCA"
>lnk.id="lnk1"
>lnk.Visible=true
>lnk.CommandName= "lnk1_Click"
>form.controls.add(lnk)

I controlli dinamici vanno aggiunti all'albero dei Controls all'Init della pagina.

Metti tutto in un evento OnInit, così (è page.controls.add(...)):
--------------------------------------------------------
Protected Overrides Sub OnInit(ByVal e As EventArgs)
MyBase.OnInit(e)

dim lnk as new linkbutton
lnk.text= "CLICCA"
lnk.id="lnk1"
lnk.Visible=true
lnk.CommandName= "lnk1_Click"
page.controls.add(lnk)
End Sub
--------------------------------------------------------

Questo già ti dovrebbe risolvere parte dei problemi.

HTH. -LV

(Peace X Love] = [1)

PEPE Profilo | Senior Member

ciao, ho provato a seguire il tuo esempio ma al caricamento della pagina ottengo questo messaggio

Il controllo 'lnk1' di tipo 'LinkButton' deve essere inserito in un tag Form con runat=server.

Il codice e' questo
Protected Overrides Sub OnInit(ByVal e As EventArgs)
MyBase.OnInit(e)
Dim lnk As New LinkButton
lnk.Text = "CLICCA"
lnk.ID = "lnk1"
lnk.Visible = True
lnk.CommandName = "lnk1_Click"
Page.Controls.Add(lnk)
End Sub

Non ho creato il metodo sub lnk1_Click per vedere se il framework mi dava il tipico errore quando ti scordi di scrivere la procedura di un click di un controllo.
Ho ottenuto pero' un errore diverso :D.


Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5