DropDownList e l'evento OnSelectedIndexChanged

mercoledì 18 marzo 2009 - 00.34

venzo Profilo | Junior Member

Ho girato e rigirato, ma non sono riuscito ad usare l'evento OnSelectedIndexChanged del dropdownlist di asp.net con vb,
senza evitare che la pagina faccia il reload, scatenando sempre l'evento load della paginaad ogni variazione.
In pratica, ho bisogno che ad ogni variazione di selezione del dropdownlist, lanci una funzione e basta.
Qualcuno ha suggerito di usare javascript per ovviare a questo problema, e se vero, non so come fare.
Mi suggerite qualcosa ?

alx_81 Profilo | Guru

>Ho girato e rigirato, ma non sono riuscito ad usare l'evento
>OnSelectedIndexChanged del dropdownlist di asp.net con vb,
>senza evitare che la pagina faccia il reload, scatenando sempre
>l'evento load della paginaad ogni variazione.
>In pratica, ho bisogno che ad ogni variazione di selezione del
>dropdownlist, lanci una funzione e basta.
>Qualcuno ha suggerito di usare javascript per ovviare a questo
>problema, e se vero, non so come fare.
>Mi suggerite qualcosa ?
Ciao, sì, javascript ti consente di lanciare la funzione senza fare postback.

se la tua è una DropDownList, devi aggiungere l'attributo onChange="javascript: nomeTuaFunzione(eventualiParametri);".
Poi, nell'head del tuo html, devi mettere un tag <script language="javascript" type="text/javascript"> e al suo interno scrivere la funzione, ad esempio:
function FaiQualcosa() { alert('Qualcosa'); }

ciao!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

venzo Profilo | Junior Member

Grazie per la risposta.
Non ho ancora provato, ma dalla lettura, voglio aggiungerti un altro interrogativo.
La funzione che devo richiamare è una funzione pubblica scritta in visual basic e definita nella cartella specifica del web server.
Come faccio dal javascript ?

alx_81 Profilo | Guru

>Grazie per la risposta.
>Non ho ancora provato, ma dalla lettura, voglio aggiungerti un
>altro interrogativo.
>La funzione che devo richiamare è una funzione pubblica scritta
>in visual basic e definita nella cartella specifica del web server.
>Come faccio dal javascript ?
eh.. no.. se è lato server col client devi per forza andare a server (ad esempio con chiamate AJAX).
Se devi lanciare una funzione lato client va bene la mia soluzione, altrimenti, se la funzione è in una classe tua sul server, devi cominciare a guardarti AJAX.
http://www.asp.net/ajax/

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

venzo Profilo | Junior Member

Scusa la mia inesperienza: e se la funzione la metto nella stessa pagina dove aggiungo il javascript, posso richiamarla da quest'ultimo ?
Io sto usando visual studio 2008.

alx_81 Profilo | Guru

>Scusa la mia inesperienza: e se la funzione la metto nella stessa
>pagina dove aggiungo il javascript, posso richiamarla da quest'ultimo?
>Io sto usando visual studio 2008.
No, credo che tu non abbia esperienza su "lato server" e "lato client". Quello che tu fai con una funzione javascript, a meno che non scrivi codice che chiama dei metodi che sono sul server (dove è pubblicato il sito, per capirci), è un insieme di operazioni sul client, ovvero sul pc con cui stai navigando. Questo è a grandissime linee un'azione lato client.
Se invece vuoi eseguire operazioni sul server, o fai chiamate in ajax (che "vanno" a server), oppure devi sfruttare la tecnologia di asp.net, che, nel tuo caso, ti impone una postback per gestire l'evento OnSelectedIndexChanged.
Non è importante DOVE metti il codice, ma di che natura è e di che natura deve essere la chiamata. La mia prima risposta è un esempio LATO CLIENT.

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

venzo Profilo | Junior Member

Ho riportato il piccolo esempio in visual studio e ho aperto un progetto asp.net ajax web sito. Ti allego il codice.

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialrendering="true" />
<div style="height: 172px">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Inline">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
<asp:ListItem>primo item</asp:ListItem>
<asp:ListItem>secondo item</asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>

Nel test quando seleziono il droDown, comunque mi fa il reload della pagina.
Dove sbaglio ?

alx_81 Profilo | Guru

>Nel test quando seleziono il droDown, comunque mi fa il reload della pagina.
>Dove sbaglio ?
Metti Autopostback a FALSE

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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