Evento OnSelectedIndexChanged Dropdownlist in datagrid

lunedì 30 giugno 2008 - 16.43

stee85 Profilo | Senior Member

Ciao a tutti,
ho un datagrid con 2 ddl. Cambiando il valore su una devo andare ad aggiornare l'altra.
Come faccio ad associare il valore al secondo ddl
Posto un po di codice

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

con il sender recupero solo la prima ddl ...

grazie
Ste

paoval72 Profilo | Senior Member

Ciao, spero di esserti d'aiuto. Seguo, come al solito, un ragionamento passo a passo, ragionato: poi, magari c'è un modo più semplice e rapido.
Se le due DropDownList sono sulla stessa riga della stessa griglia (come credo di avere capito), devo risalire alla riga stessa, che è un elemento della griglia (l'ITEM). Quindi, uso il .parent. Risalgo dapprima alla cella della tabella (TableCell), quindi ancora più in su nella gerarchia alla riga selezionata (il Data Grid Item), sempre facendo il cast. Poi, prendo il controllo della seconda ddl: qui devi trovare l'esatta posizione della cella che la contiene(la .cell[??] )e del suo controllo (di solito è alla posizione [1]). Infine, con un ciclo confronto il value della prima ddl con quello della seconda. Nell'esempio che ti allego, quando trovo il valore nella seconda ddl, lo rendo selezionato.
Ovviamente l'autopostback della prima ddl è a true, ma studiandoci credo si possa fare anche con una function in javascript, senza ricaricare la pagina.

protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = ((DropDownList)sender);
string id = ((DropDownList)sender).SelectedValue.ToString();
TableCell tc = (TableCell)ddl.Parent;
DataGridItem dgi = (DataGridItem)tc.Parent;
CambiaDdl2(id, dgi);
}

private void CambiaDdl2(string index,DataGridItem dgi)
{
DropDownList ddl2 =(DropDownList)dgi.Cells[??].Controls[1];
foreach (ListItem li in ddl2.Items)
if (li.Value == index)
li.Selected = true;
else li.Selected = false;
}

Ho provato da me e funziona.
Ciao,


Paolo
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5