PDA

View Full Version : [ASP.NET]impostare un selectedValue in un menu a tendina dentro una GridView:come fò?


Brad13
11-11-2009, 10:23
Ciao a tutti!
Ho una Gridview, contenente un campo <EditItemTemplate>, dove ho inserito una DropDownList (che vado a popolare dinamicamente con 4 items predefiniti, ad esempio:
1)foo
2)bar
3)pippo
4)pluto ).

Poniamo che il campo della Gridview mostri l'item "pippo" e voglio editarlo:
Quando vado a fare l'edit sulla DropDownList di prima, mi ritrovo sempre selezionata la 1a item, in questo caso:"foo"; invece vorrei ritrovarmi l'tem "pippo".
Quindi come faccio a impostare il SelectedValue col valore "vecchio" prima di selezionare quello nuovo?
Vi ringrazio in anticipo per la pazienza ragazzi, vi allego il codice del CodeBehind :)

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

if((e.Row.RowState == DataControlRowState.Edit)||
(e.Row.RowState == (DataControlRowState.Alternate |
DataControlRowState.Edit)) )
{

//popola la dropddownlist
DropDownList ddl1 = (DropDownList)e.Row.FindControl("DropDownList1");
//items predefinite di questo menu a tendina
ddl1.Items.Add("foo");
ddl1.Items.Add("bar");
ddl1.Items.Add("pippo");
ddl1.Items.Add("pluto");
}

}


protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//indice della riga editata
int index = GridView1.EditIndex;

//ottieni la riga editata della GridView
GridViewRow row = GridView1.Rows[index];

//ottieni i controlli che contengono i valori aggiornati
DropDownList ddl1 = (DropDownList)row.Cells[4].FindControl("DropDownList1");

//Aggiungi i valori aggiornati al dizionario NewValues
e.NewValues["categoria"] = ddl1.SelectedValue;
}

ramones1985
11-11-2009, 14:06
...non ho mica capito :mc: :D

Brad13
11-11-2009, 14:28
Hai ragione:D Con le immagini si capirà meglio:)
Quando visualizzo la gridview, la voce visualizzata è "pippo"
http://img509.imageshack.us/img509/862/visualizza.th.png (http://img509.imageshack.us/i/visualizza.png/)


Se premo il bottone "Modifica", la prima voce del menu a tendina è "foo", anzichè "pippo"
http://img17.imageshack.us/img17/2039/editjh.th.png (http://img17.imageshack.us/i/editjh.png/)

Nel code behind dovrei fare qualcosa tipo:
miaItem.selectedValue = "vecchiaItem"
ma non so come fare a livello di codice!

ramones1985
11-11-2009, 14:50
....un controllo forse stupido (perchè non so se funziona eheh).....ma....


quando clicchi modifica non può fare una cosa del tipo






miaItem.Items.FindByValue("Pippo").Selected = true;


...al posto di Pippo il CampoCategoria .....


...questo mi funziona in una ListBox però....mi seleziona il campo che gli passo nel find...

nell'evento del pulsante Modifica
prendi il valore CampoCategoria e lo passa in miaItem.Items.FindByValue(CampoCategoria).Selected = true;

Brad13
11-11-2009, 15:38
....un controllo forse stupido (perchè non so se funziona eheh).....ma....
quando clicchi modifica non può fare una cosa del tipo
miaItem.Items.FindByValue("Pippo").Selected = true;
...al posto di Pippo il CampoCategoria .....
...questo mi funziona in una ListBox però....mi seleziona il campo che gli passo nel find...
nell'evento del pulsante Modifica
prendi il valore CampoCategoria e lo passa in miaItem.Items.FindByValue(CampoCategoria).Selected = true;
Sei un genio, FUNZIONAAAA! Grazie!:)

ramones1985
11-11-2009, 15:53
Sei un genio, FUNZIONAAAA! Grazie!:)

De Nada!

ps: non sai quanti cristi avevo tirato per capire come fare una cosa simile!!

poi avevo trovato quel metodo, e quando ho capito qual'era il tuo problema ho riaperto il progetto per cui lo avevo fatto!!!

:D :D

Brad13
11-11-2009, 15:57
De Nada!

ps: non sai quanti cristi avevo tirato per capire come fare una cosa simile!!

poi avevo trovato quel metodo, e quando ho capito qual'era il tuo problema ho riaperto il progetto per cui lo avevo fatto!!!

:D :D
Ahah, l'ho sempre detto che i vecchi progetti, pur minchioni che siano, non si devono mai cancellare! :D :D