Acquisire i dati da un Repeater e DropDownList

mercoledì 20 aprile 2005 - 10.02

sacsacsac Profilo | Newbie

Buongiorno a tutti.

In una pagina ASPX ho un repeater, all'interno del quale, nell'ItemTemplate, praticamente ho due TD, in cui in una ho un valore di un campo di una tabella (descrizione di un prodotto) e nell'altra TD ho una DropDownlist che popolo dinamicamente in base al prodotto (valutazione del prodotto/servizio da parte di un utente).

Bene e sin qui tutto funziona!

A fine pagina c'è un tastino per mezzo del quale voglio salvarmi la valutazione dell'utente, per cui per ogni id del prodotto corrisponderà ad una id valutazione.

La mia domanda è, come faccio ad acquisire i valori della Dropdownlist che l'utente ha selezionato e che io dinamicamente ho popolato in funzione del prodotto?

Dovrei ciclare il repeater nel codebehind (c#) per elaborare ogni idprodotto e prendermi la idvalutazione?
E ma come si fa?

Ciao
Grazie anticipatamente a tutti

Brainkiller Profilo | Guru

Si è proprio così, bisogna fare un ciclo su tutti gli oggetti della pagina.
Il Repeater è un controllo molto evoluto e, una volta renderizzato, al suo interno troveremo numerosi oggetti spesso ripetuti (td e tr).

Per ciclare su tutti gli oggetti è sufficiente cosruire una funzione ad hoc che accetti come parametro una Collection tipo ControlCollection e il corpo della funzione deve contenere una roba tipo:

for each object a in Collezione

Se la collection contiene più di 0 oggetti è necessario richiamare la funzione ricorsivamente. In questo modo ottieni tutta la gerarchia degli oggetti.
Fai un IF per verificare se il tipo di controllo è una dropdown. se sì recuperi i valrori.

ciao
david

sacsacsac Profilo | Newbie

Ti ringrazio infinitamente per aver risposto al mio quesito.

Un altro amico del forum mi ha indicato un'altra soluzione, alla pressione del tasto nella pagina ASPX:

private void Button1_Click(object sender, System.EventArgs e)
{
foreach(RepeaterItem item in Repeater1.Items)
{
DropDownList ctl = (DropDownList) item.FindControl("DropDownList1");
Response.Write( "-->"+ ctl.SelectedItem.ToString();
Response.End();
}
);
}

La funzione cicla per ogni item del repeater ma al secondo giro (ce ne sono 5 di item) mi va in errore e mi da "Riferimento a un oggetto non impostato su un'stanza di oggetto (System.NullReferenceException)"

Le dropdownlist sono valorizzate, prima di cliccare sul tasto seleziono gli elementi di tutte le dropdownlist.

Come mai va in errore?
Ti viene in mente qualcosa?

Potresti indicarmi il codice della tua soluzione?

Ciao
Grazie infinitamente
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5