DropDownList runtime in un gridview

mercoledì 01 ottobre 2008 - 17.42

Gemini Profilo | Expert

Ciao a tutti,
ho inserito runtime una dropdownlist in una gridview.
Il mio problema è che non so come far selezionare, all'interno della della dropdownlist, l'elemento letto dal database.
Questo è il mio codice:

public class myGridViewTemplate : ITemplate
{


public myGridViewTemplate()
{
}

//Implemento il metodo astratto InstantiateIn dell'Interfaccia ITemplate
//Questo metodo sarà richiamato automaticamente
public void InstantiateIn(System.Web.UI.Control container)
{

DropDownList ddlOnWeb = new DropDownList();

ddlOnWeb.CssClass = "text_box";

// ddlOnWeb.SelectedValue="<%# Bind ("status") %>" ;

ddlOnWeb.Items.Add(new ListItem("NO", "NO"));
ddlOnWeb.Items.Add(new ListItem("SI", "SI"));
ddlOnWeb.DataValueField = "";
ddlOnWeb.DataTextField = "";

//a questo punto vorrei inizializzare la dropdown
//con un valore presente nel datasource
//inutile dire che eventuali valori assegnati a
//DataValueField e DataTextField vengono ignorati


container.Controls.Add(ddlOnWeb);

}
}

//nella in cui inserisco la gridview, aggiungo la colonna solo quando mi serve
private void aggiorna ()
{
if(condizione)
{
TemplateField tf = new TemplateField();
tf.HeaderText = "su Web";
tf.ItemTemplate = new myGridViewTemplate();

grvElencoCamere.Columns.Add(tf);
}

grvElencoCamere.DataSource = myDataSource;
grvElencoCamere.DataBind();
}

Grazie mille

balfaz Profilo | Expert

prova con questa istruzione son sicuro che ti servira

se il valore salvato nel db è il testo della tua DDL puoi fare così:
DDL_tuo.SelectedIndex = DDL_tuo.Items.IndexOf(DDL_tuo.Items.FindByText(.Item(campo_DB).ToString))

oppure se il tuo valore salvato nel DB e l'index della tua DDl fai in quest'altra maniera:

DDL_tuo.SelectedIndex = DDL_tuo.Items.IndexOf(DDL_tuo.Items.FindByValue(.Item(campo_DB).ToString))

buon lavoro
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

Gemini Profilo | Expert

Ciao, grazie per la risposta.
Ci sono 2 piccoli problemi:
1- credo che ci sia un errore di scrittura che non riesco a interpretare:

.Item("disponibile_web").ToString() nella istruzione

ddlOnWeb.SelectedIndex = ddlOnWeb.Items.IndexOf(ddlOnWeb.Items.FindByText(.Item("disponibile_web").ToString()));

2 - Il mio problema è che il datasource è esterno alla classe che ilmplemanta iltemplate con la dropdownlist, per cui non riesco a settare il campo del datasource che serve ad inizializzarla

se avessi usato i tag avrei utilizzato senza problemi

SelectedValue='<%# Bind ("campo) %>' nel tag asp_dropdownlist ...

balfaz Profilo | Expert

per il ".item", puoi risolverlo mettendo prima del punto il datasource
[ddlOnWeb.SelectedIndex = ddlOnWeb.Items.IndexOf(ddlOnWeb.Items.FindByText(DATASOURCE.Item("disponibile_web").ToString()));], allora vediamo il secondo punto....
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."
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