63 messaggi dal 28 aprile 2006
Buongiorno a tutti, lo so avete una sensazione di Déjà Vu, ho già fatto questa domanda, ma questa volta utilizzo VS 2005 e i collegamenti per le dropdownlist tramite wizard...

Ecco il mio problema:

Ho la DropDownlist(DDLN) delle Nazioni(ho già impostato l'autopostback = "true", ho imparato la lezione) e la DropDownList delle Province(DDLP), quando seleziono una Nazione dalla DDLN vorrei che filtrasse le Province nella DDLP. Dunque la DDLN è collegata al DB SQL Server tramite una SQLDataSource costruita con il wizard di VS 2005, mentre la DDLP non è collegata a nulla, perchè la voglio popolare sull'evento SelectedIndexChanged della DDLN.
Ho fatto anche un metodo e l'ho scritto tramite le proprietà nell'evento appena specificato.

Ecco il metodo(che è sicuramente sbagliato):

***
C#
***
protected void BindDetails(object sender, System.EventArgs e)
{
DataSet ds = new DataSet();

*** sql si riferisce ad una classe contenente i metodi con
*** tutte le query. L'ho istanziata all'inizio nella pageLoad.
*** Nel caso seguente viene restituito un DataSet.

ds = sql.Province(cmbNazioni.SelectedValue);

** Riferimento alla colonna delle descrizioni Province
cmbProvince.DataSource = ds.Tables[0].Rows[0][0].ToString();
cmbProvince.DataBind();
}

*****
ASPX
*****

<asp:DropDownList ID="cmbNazioni" runat="server" DataSourceID="SqlDataSource"
DataTextField="DesNazione"
DataValueField="IdNazione"
Width="153px"
AutoPostBack="True"
OnSelectedIndexChanged="BindDetails">
</asp:DropDownList>

<asp:SqlDataSource
ID="SqlDataSource"
runat="server"
ConnectionString="<%$ ConnectionStrings:4-tradeConnectionString %>"
SelectCommand="SELECT IdNazione, DesNazione FROM Nazioni ORDER BY IdNazione">
</asp:SqlDataSource>

Qualcuno è così gentile come faccio a filtrare le province nella DDLP selezionado una nazione da DDLP?

Grazie Barbara
13 messaggi dal 16 gennaio 2008
Ciao!
Allora io volevo fare più o meno la stessa cosa( naturalmente con un altro tipo di DB)
Se ho capito bene vorresti che nella DDLP(credo sia l'ID) ci siano solo le province che fan parte della nazione selezionata nella cmbNazioni.
Non ho dovuto nemmeno usare codice c#, prova a far così(alcune cose le saprai già, ma io comincio dall'inizio, cosi magari mi spiego meglio):

1)Selezioni la DDLP e vai sul menù attività di DropDownList(appare se fai click sul triangolo nero che appare in alto a dx della DropDownList)
2)Scegli "Scegli origine dati..."
3)Scegli nuova origine dati
4)Selezioni l'origine dati(io con SQL server ho selezionato Database)
5)Imposta la tua connessione
6)Ora devi scrivere la query, (penso ti convenga scegliere la personalizzata) che credo per te sia una cosa del genere:
SELECT provincia FROM province, nazioni, ... where IdNazione=@IdNazione and ...

Quando finirai di scrivere la query ti chiederà di scegliere un origine (cioè a che cosa deve far riferimento il "@nazione"), scegli "Control" e a questo punto metti l'ID della DropDownList delle nazioni, che dovrebbe essere cmbNazioni.

Questo è quanto, spero di esser stato utile e sopratutto chiaro.
Ciao.
78 messaggi dal 01 febbraio 2007
Nella query delle provincie utilizzi l'id della nazione o la descrizione?
13 messaggi dal 16 gennaio 2008
dubbio ha scritto:
Nella query delle provincie utilizzi l'id della nazione o la descrizione?


Dipende da quello che è stato selezionato nella DropDownList (delle nazioni in questo caso), io nella query delle provincie ho messo l'id per far un esempio. Bisogna mettere qualcosa che permetta di filtrare i risultati, e ciò dipende da come è fatto il DB.

Faccio il classico esempio del DB con gli studenti che frequentano dei corsi:

Studenti(id_stud, nome)
frequenta(id_stud, id_corso)
corsi(id_corso, nome_corso)

ho una DDL1 in cui ho la lista dei id_stud
voglio che nella DDL2 ci siano gli id_corsi frequentati da l'id_stud selezionato nella DDL1

al punto 6 di quello che ho scritto prima la query sarà:
SELECT id_corsi FROM frequenta WHERE id_stud= @id_stud
e il controllo da assegnare a "@id_stud" è DDL1

se la si vuol far più difficile:
voglio nella DDL2 i nomi dei corsi frequentati dal nome studente che seleziono nella DDL1(quindi ora nella DDL1 ci sono i nomi)
SELECT nome_corso
FROM studenti, frequenta, corsi
WHERE studenti.id_stud = frequenta.id_stud
AND frequenta.id_corso = corso.id_corsi
AND id_stud = (SELECT id_stud FROM studenti WHERE nome = @nome)

il "@nome" lo associ alla DDL1
bisogna però che il nome nella tabella studenti sia UNIQUE, altrimenti può restituire più di un id_stud.

Spero di averti aiutato, ciao.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.