Valore testo DropDownList

mercoledì 27 agosto 2008 - 15.54

brazero Profilo | Junior Member

Ciao,

sono alle prime armi nello sviluppo web, qualcuno sa come si fa...
ho due dropdownlist, una popolata con i nomi di alcuni paesi e una seconda che a seconda della scelta del paese viene popolata con i nome delle città di tale paese.. il fatto è che mi sfugge qualcosa, non riesco a prendere il valore del testo della 1° combobox e passare come parametro per la seconda in modo da popolarla..
per ora ho fatto così:

# 1 DDL

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load cbCountry.DataSource = objL.GetCountriesAD() cbCountry.DataMember = "CountriesAD" cbCountry.Enabled = True cbCountry.DataValueField = "Countries" cbCountry.DataTextField = "Countries" cbCountry.DataBind() cbCountry.AutoPostBack = True End Sub

# 2° DDL

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

quindi "cbCountry.Text" è la proprietà che contiene il valore selezionato nel menu a tendina??.. o magari è per le impostazioni di post \ get ??

GRAZIEEEEEEEEE

alx_81 Profilo | Guru

>Ciao,
Ciao!

>ho due dropdownlist, una popolata con i nomi di alcuni paesi
>e una seconda che a seconda della scelta del paese viene popolata
>con i nome delle città di tale paese.. il fatto è che mi sfugge
>qualcosa, non riesco a prendere il valore del testo della 1°
>combobox e passare come parametro per la seconda in modo da popolarla..
>per ora ho fatto così:
>
># 1 DDL
>
>Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
>Handles Me.Load
> cbCountry.DataSource = objL.GetCountriesAD()
> cbCountry.DataMember = "CountriesAD"
> cbCountry.Enabled = True
> cbCountry.DataValueField = "Countries"
> cbCountry.DataTextField = "Countries"
> cbCountry.DataBind()
> cbCountry.AutoPostBack = True
> End Sub
>

Per la seconda DDL, gestisci l'evento SelectedIndexChanged della prima DDL:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selectedindexchanged.aspx

In questo modo, quando cambi la selezione, crei il binding alla seconda DDL e poi esegui il metodo Databind() come per la prima.
Il valore selezionato si ricava con SelectedValue della prima DDL:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selectedvalue.aspx

--

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

brazero Profilo | Junior Member

Ciao Alessandro..

ho fatto come hai detto.. ma è che propio non mi restituisce il valore della stringa della dropdownlist.. l'unica cosa che fa vedere il seguente messaggio: "the search filter cannot be recognized" ..

uso visual studio 2008.. ecco il codice:


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

.. La seconda DDList è apposto, se passo per dire il parametro manualmente funziona..

cbCity.DataSource = objL.GetCitiesAD("ITALIA")

non sarà un problema con post \ get \ query string ?? io non capisco molto di sviluppo web..

GRAZIE ANCORA

alx_81 Profilo | Guru

>.. La seconda DDList è apposto, se passo per dire il parametro
>manualmente funziona..
>
>cbCity.DataSource = objL.GetCitiesAD("ITALIA")
ma cosa è objL?
e il metodo GetCitiesAD?
posta la definizione di quegli oggetti/metodi per favore..

>non sarà un problema con post \ get \ query string ?? io non
>capisco molto di sviluppo web..
Così non ti so dire proprio nulla..
Semplicemente, al cambio di indice del primo ddl, devi prendere il SelectedValue e poi passarlo al metodo che ricava i dati per il secondo DDL.
Infine esegui il binding..
>
>GRAZIE ANCORA
di nulla!
--

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

brazero Profilo | Junior Member

>>cbCity.DataSource = objL.GetCitiesAD("ITALIA")
>ma cosa è objL?
>e il metodo GetCitiesAD?
>posta la definizione di quegli oggetti/metodi per favore..

certo.. "objL" è un oggetto puntatore ad una classe che in questo caso
invoca il metodo "GetCitiesAD(string)" che ha come parametro una stringa,
e che restituisce un DATATABLE formato di un'unica colonna con i nomi delle città
del paese passato come parametro..

questo passaggio alla fine serve per fungere da filtro..

stesso discorso per "objL.GetCountriesAD()" della prima DDList che restituisce
un datatable formato da un'unica colonna con i nomi dei paesi, ma ovviamente non ha parametro..

questo programma inizialmente l'ho fatto come winapp e funziona,
ma adesso ho avuto la necessità di convertilo in webapp..

Grazie e Forza Parma

alx_81 Profilo | Guru

>questo programma inizialmente l'ho fatto come winapp e funziona,
>ma adesso ho avuto la necessità di convertilo in webapp..
Innanzitutto una considerazione. Perchè ti fai passare una sola colonna? Visto che il drop down ha due proprietà da impostare (uno il valore ed uno il testo) sarebbe meglio farsi passare due colonne, una con la chiave ed una con la descrizione (Questo per correttezza).
A prescindere da questo, se dici che "a mano" i metodi vanno, devi controllare in debug che valore arriva al secondo DDL al SelectedIndexChanged.
Cerca di fare debug del codice, anche perchè hai messo il binding della prima DDL nella Load e considera che quando cambia l'indice di questa drop down, prima di gestire l'evento di SelectedIndexChanged passa dalla load e riesegue il binding. Il problema potrebbe essere proprio lì.
Se così fosse, devi gestire il collegamento ai dati controllando prima la proprietà Page.IsPostBack. Ad esempio:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then cbCountry.DataSource = objL.GetCountriesAD() cbCountry.DataMember = "CountriesAD" cbCountry.Enabled = True cbCountry.DataValueField = "Countries" cbCountry.DataTextField = "Countries" cbCountry.DataBind() cbCountry.AutoPostBack = True End If End Sub
>
>Grazie e Forza Parma
Di nulla!
Ma se intendi per il calcio, proprio è uno sport che non sopporto
e quando lo sopportavo, non tenevo nemmeno per il Parma ahahah

--

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

brazero Profilo | Junior Member

RISOLTO!!!

>Cerca di fare debug del codice, anche perchè hai messo il binding
>della prima DDL nella Load e considera che quando cambia l'indice
>di questa drop down, prima di gestire l'evento di SelectedIndexChanged
>passa dalla load e riesegue il binding. Il problema potrebbe
>essere proprio lì.


infatti il problema era proprio lì.. mi è bastato gestire la proprietà "Page.IsPostBack"..
come mi avevi suggerito..


>Se così fosse, devi gestire il collegamento ai dati controllando
>prima la proprietà Page.IsPostBack. Ad esempio:
>
>Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
>Handles Me.Load
> If Not Page.IsPostBack Then
>...


>Ma se intendi per il calcio, proprio è uno sport che non sopporto
>
>e quando lo sopportavo, non tenevo nemmeno per il Parma ahahah
>

io come brasiliano il calcio ce l'ho nel sangue
ma intendevo dire in generale perché anch'io vivo nella città del Prosciutto e formaggio..
e non tengo per il Parma.. hahahaha

comunque GRAZIE MILLE PER L'AIUTO!!

DAVVERO MOLTO GENTILE..

CIAO

alx_81 Profilo | Guru

>io come brasiliano il calcio ce l'ho nel sangue
>ma intendevo dire in generale perché anch'io vivo nella città
>del Prosciutto e formaggio..
conosco un brasiliano di nome Paolo a Pr.. sei tu?
--

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

brazero Profilo | Junior Member

>conosco un brasiliano di nome Paolo a Pr.. sei tu?

NO.. pensa sarebbe il colmo.. hahaha.. mi chiamo Fabio
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