문제

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();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top