foreach (string name in nameList){
ddl.Items.Add(new ListItem(nameList[name].ToString()));
}
Is your problem.
it should look more like
foreach (string name in nameList){
ddl.Items.Add(new ListItem(name.ToString()));
}
But I actually like Marcus' suggestion a little better.