Per il primo punto è stato abbondantemente discusso qui'
http://forum.html.it/forum/showthrea...readid=1119850
per il punto 2:
(sarebbe piu' normale prenderlo nell'evento selectedindex_changed ma se vuoi fai cosi')
gli elementi del dropdownlist hanno solo 2 attributi, value e text
quindi puoi mettere dentro value sia il valore della città, sia il valore della nazione, solo mettendo le 2 stringhe separate da un trattino (es. "RO-IT")
quindi la query ti verrà una roba cosi'
SELECT cod_citt+'-'+cod_naz AS Value, descr_citt AS Text FROM tabella_citt c
INNER JOIN tabell_naz n ON
c.cod_citt = n.cod_citt
poi, quando prendi il valore della selezionata fai cosi'
string citta = ddl.SelectedValue.Split("-")[0];
string nazione = ddl.SelectedValue.Split("-")[1];