List<String> nameList = new List<String>();
DropDownList ddl = new DropDownList();
Список заполняется здесь, затем сортируется:
nameList.Sort();
Теперь мне нужно поместить его в раскрывающийся список, где у меня возникают проблемы (с использованием foreach):
foreach (string name in nameList){
ddl.Items.Add(new ListItem(nameList[name].ToString()));
}
Нет работника - есть предложения? Это дает мне ошибки компиляции:
Error - The best overloaded method match for 'System.Collections.Generic.List<string>.this[int]' has some invalid arguments
Error - Argument '1': cannot convert from 'string' to 'int'





Почему бы просто не привязать DDL напрямую к списку, например
DropDownList ddl = new DropDownList();
ddl.DataSource = nameList;
ddl.DataBind();
Замените это:
ddl.Items.Add(new ListItem(nameList[name].ToString()));
с этим:
ddl.Items.Add(new ListItem(name));
Готово как ужин.
foreach (string name in nameList){
ddl.Items.Add(new ListItem(nameList[name].ToString()));
}
Это твоя проблема.
это должно быть больше похоже на
foreach (string name in nameList){
ddl.Items.Add(new ListItem(name.ToString()));
}
Но на самом деле мне немного больше нравится предложение Маркуса.
Это было бы потому, что List индексируется не по строке (имени), а по целым числам.
foreach (string name in nameList)
{
ddl.Items.Add(new ListItem(name));
}
Исправлю это.
Вы получаете эту ошибку, потому что коллекция nameList - это List, поэтому вы должны обращаться к ней, используя индекс, а не строку (вы используете имя).
Итак, вы можете написать:
foreach (string name in nameList){
ddl.Items.Add(name);
}
Кстати, лучший способ сделать это:
ddl.DataSource = nameList;
ddl.DataBind();
ddl.DataSource = nameList;
ddl.DataBind();
Не работает, если это список SharePoint - Ошибка: источник данных недопустимого типа. Это должен быть IListSource, IEnumerable или IDataSource. Решил вмешаться, если разработчики SharePoint подумали, что это для SPList, а не для List <string>, как было написано выше.
Существует способ привязки к SPList, но вы должны использовать SPListItemCollection или пойти еще лучше и использовать SPDataSource. Для разработчиков SharePoint см. этот блог Криса О'Брайена.