C #- 목록을 드롭 다운 목록에 덤프합니다
-
05-07-2019 - |
문제
List<String> nameList = new List<String>();
DropDownList ddl = new DropDownList();
여기에 목록이 배출 된 다음 정렬됩니다.
nameList.Sort();
이제 DropdownList에 삭제해야합니다. 여기에는 문제가있는 곳 (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.Items.Add(new ListItem(nameList[name].ToString()));
이것으로 :
ddl.Items.Add(new ListItem(name));
저녁 식사처럼 끝났습니다.
다른 팁
왜 DDL을 목록에 직접 바인딩하지 않겠습니까?
DropDownList ddl = new DropDownList();
ddl.DataSource = nameList;
ddl.DataBind();
ddl.DataSource = nameList;
ddl.DataBind();
SharePoint 목록 인 경우 작동하지 않습니다. 오류 : 데이터 소스는 잘못된 유형입니다. 그것은 ilistsource, ienumerable 또는 iDatasource 여야합니다. SharePoint 개발자가 이것이 목록 대신 Splist를위한 것이라고 생각한 경우에 Chime을 결정했습니다.u003Cstring> 위에 쓰여진대로.
Splist에 결합하는 방법이 있지만 SplistitemCollection을 사용하거나 더 잘 가서 Spdatasource를 사용합니다. SharePoint 개발자는 참조하십시오 Chris O 'Brien 의이 블로그.
목록은 문자열 (이름)에 의해 색인이 아니라 ints에 의해 인덱스되기 때문입니다.
foreach (string name in nameList)
{
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()));
}
그러나 나는 실제로 Marcus의 제안을 조금 더 좋아합니다.
컬렉션이므로 오류가 발생합니다 nameList
a List
따라서 문자열이 아닌 인덱스를 사용하여 액세스해야합니다 (이름을 사용).
그래서 당신은 다음을 쓸 수 있습니다.
foreach (string name in nameList){
ddl.Items.Add(name);
}
BTW이 작업을 수행하는 가장 좋은 방법은 다음과 같습니다.
ddl.DataSource = nameList;
ddl.DataBind();