Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Link Button, Image Button e PostBack
domenica 28 aprile 2013 - 06.34
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 2.0
gsistemi
Profilo
| Junior Member
100
messaggi | Data Invio:
dom 28 apr 2013 - 06:34
Ho inserito un Link Button e un Image Button all'interno di un UpdatePanel per eseguire l'aggiornamento parziale della pagina e mantenere la posizione della barra di scorrimento al momento del click. Ho notato che i due tipi di pulsanti si comportano in modo diverso.
Il primo esegue il postback e ricarica completamente la pagina, il secondo fa quello che voglio io!
C'è differenza tra i due postback o sbaglio io?
<asp:updatepanel id="updpanel1" updatemode="conditional" runat="server"><contenttemplate>
<asp:repeater id="rpt" onitemcommand="scegli_click" runat="server"><itemtemplate>
<asp:linkbutton id="scegli1" commandname='<%# databinder.eval(container.dataitem, "id") %>' commandargument='<%# databinder.eval(container.dataitem, "par") %>' runat="server" ><img src="img/button.png" /></asp:linkbutton>
<asp:imagebutton id="scegli2" imageurl="img/button.png" onclick="scegli_click2" runat="server" />
</itemtemplate></asp:repeater>
</contenttemplate></asp:updatepanel>
mexico77
Profilo
| Junior Member
96
messaggi | Data Invio:
lun 29 apr 2013 - 09:38
Il PostBack è lo stesso per entrambe. Ma su uno tu hai OnClick su un'altro no.
www.setteweb.it
gsistemi
Profilo
| Junior Member
100
messaggi | Data Invio:
lun 29 apr 2013 - 10:31
Sul linkbutton c'è onitemcommand sul repeater. Comunque ho risolto, in effetti i due postback sono differenti uno è asincrono (imagebutton) e l'altro sincrono (linkbutton) anche se inserito all'interno di un updatepanel. Perchè sia così non lo so, io ho risolto così.
bisogna registrare il controllo linkbutton come postback asincrono con l'istruzione ToolkitScriptManager1.RegisterAsyncPostBackControl( nome controllo ), io avevo un problema in più in quanto il/i linkbutton sono in un repeater. Per risolvere ho dovuto inserire il comando di registrazione all'interno dell'evento onitemcreated del repeater. Il codice diventa così:
<body>
<form runat="server">
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" />
<asp:updatepanel id="updpanel1" runat="server"><contenttemplate>
<asp:repeater id="rpt" onitemcommand="scegli_click" onitemcreated="rpt_item" runat="server"><itemtemplate>
<asp:linkbutton id="scegli" commandname='<%# databinder.eval(container.dataitem, "id") %>' commandargument='<%# databinder.eval(container.dataitem, "par") %>' runat="server" clientidmode="static" ><img src="img/button.png" /></asp:linkbutton>
<asp:imagebutton id="scegli2" imageurl="img/button.png" onclick="scegli_click2" runat="server" />
</itemtemplate></asp:repeater>
</contenttemplate></asp:updatepanel>
sub rpt_item( s as object, e as repeateritemeventargs )
dim lb as linkbutton = ctype( e.item.findcontrol("scegli"), linkbutton )
ToolkitScriptManager1.RegisterAsyncPostBackControl(lb)
end sub
sub scegli_click( s as object, e as repeatercommandeventargs)
...
end sub
sub scegli2_click( s as object, e as repeatercommandeventargs)
...
end sub
in questo modo il linkbutton si comporta come imagebutton.
A chi può interessare io con questa soluzione ho avuto qualche problema con alcune istruzioni jquery che eseguo al caricamento della pagina. Praticamente alcuni comandi che eseguo al caricamento della pagina (spostare e ridimensionare dei div e span) vengono resettati dalla pressione del linkbutton. Io ho risolto così:
<body>
<form runat="server">
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
... istruzioni jquery/javascript da eseguire
}
</script>
Con questa parte di codice si eseguono le istruzioni dopo che il postback asincrono ha completato la sua richiesta. E' possibile eseguire delle operazioni anche all'inizio del postback con .add_beginRequest( nome funzione).
Spero sia utile a qualcuno!
Saluti
Torna su
Stanze Forum
Elenco Threads
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 !