DataValueField in DropDownList

venerdì 13 aprile 2007 - 11.41

erik77 Profilo | Senior Member

Ciao ragazzi,
ho l'esigenza di caricare nella DropDownList nell'attributo "DataTextField" una descrizione e poi nel "DataValueField" un valore.
Il fatto è che il valore caricato nel "DataValueField" serve per raggruppare diverse descrizioni... cioè non è univoco .

Il problema è... che quando si genera il postback... la combo cambia di posizione ... andando sul primo "valore" che trova.... e non su quello che era selezionato prima....


come si può aggirare il problema?


grazie
ciaooo

alx_81 Profilo | Guru

>Ciao ragazzi,
Ciao!

>ho l'esigenza di caricare nella DropDownList nell'attributo "DataTextField"
>una descrizione e poi nel "DataValueField" un valore.
>Il fatto è che il valore caricato nel "DataValueField" serve
>per raggruppare diverse descrizioni... cioè non è univoco .
>
>Il problema è... che quando si genera il postback... la combo
>cambia di posizione ... andando sul primo "valore" che trova....
>e non su quello che era selezionato prima....
>
>
>come si può aggirare il problema?
molto spesso, problemi come questo si risolvono mettendo il bind del controllo all'interno del test sulla proprietà IsPostback della pagina..
Nella load:

If Not Page.IsPostBack Then '... DDL1.Databind() End If

in questo modo il rebind del datasource al dropdown si ha solo se sei nel primo accesso alla pagina.. in caso contrario la postback gestisce la selezione del value corretto..

>grazie
di nulla!
>ciaooo

Alx81 =)

http://blogs.dotnethell.it/suxstellino

erik77 Profilo | Senior Member

forse non mi sono spiegato bene...
...specifico che la selezione del valore della DropDownList non genera postback...
e che è un postback successivo (click di un bottone) a far posizionare non correttamente la DropDownList.

quello che ho provato a fare è di registrarmi la posizione del valore selezionato... e successivamente riposizionare la DropDownList.
Le istruzioni solo le seguenti :
viewstate("DDL_INDEX") = DDL_Impianto.SelectedIndex

e poi :
DDL_Impianto.SelectedIndex = viewstate("DDL_INDEX")

ma non riesco a capire in quali eventi della pagina mettere queste istruzioni.
forse in qualche Page Events?
nel Page Load il valore SelectedIndex è sempre lo stesso... quando seleziono voci dallo stesso valore.

grazie di nuovo
ciaooo

alx_81 Profilo | Guru

>forse non mi sono spiegato bene...
>...specifico che la selezione del valore della DropDownList non
>genera postback...
>e che è un postback successivo (click di un bottone) a far posizionare
>non correttamente la DropDownList.
Indipendentemente dal controllo che scatena la postback, se la proprietà EnableViewState del dropdownlist è a true, la postback imposta il dropdown all'ultima voce selezionata prima di scatenarla..
Quindi, se tu fai la DataBind da codice, devi non farla se ritorni sulla stessa pagina (e non sei al primo accesso)..
non c'è bisogno di andare a viewstate se lasci il controllo settato di default..

basta fare una cosa del tipo:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

e nella Page_Load:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then ' imposti il datasource e fai il bind ' ... ddl1.DataBind() End If End Sub
>
>grazie di nuovo
di nulla!
>ciaooo

Alx81 =)

http://blogs.dotnethell.it/suxstellino

erik77 Profilo | Senior Member

scusami di nuovo...
ma forse non mi riesco a spiegare...

io il Bind lo faccio all'interno di :
If Not Page.IsPostBack Then

il fatto è che io non ho un valore univo del campo "DataValueField" .. e ti assicuro... che se tale valore non è univoco... dopo un postback ... la DropDownList cambia posizione con il primo valore trovato nella lista... e non quello che è stato impostato...


ciaooo

alx_81 Profilo | Guru

>scusami di nuovo...
>ma forse non mi riesco a spiegare...
>
>io il Bind lo faccio all'interno di :
> If Not Page.IsPostBack Then
>
>il fatto è che io non ho un valore univo del campo "DataValueField"
>.. e ti assicuro... che se tale valore non è univoco... dopo
>un postback ... la DropDownList cambia posizione con il primo
>valore trovato nella lista... e non quello che è stato impostato...
Ok, chiaro.. non sapendo quale prendere, prende il primo.. Ora ho capito scusami tu..
Beh.. a questo punto non capisco a cosa ti serva un value non univoco.. anche se cambiano le descrizioni, l'operazione che devi fare è la stessa.. quindi perchè non rendere univoco il tuo value (prendendolo uno ed una sola volta), raggruppando la sua definizione in un unico datatextfield? Sinceramente non comprendo l'esigenza di tenerli separati.. tanto fanno la stessa cosa, sono lo stesso valore.. giusto?
>
>
>ciaooo
>

Alx81 =)

http://blogs.dotnethell.it/suxstellino

erik77 Profilo | Senior Member

che dirti... l'utente lo vuole così....

comunque ho risolto... assegnando una valore univoco... e poi successivamente rimappo questo valore con quello non univoco....


grazie
ciaooo
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