2008-10-29 4 views
13
List<String> nameList = new List<String>(); 
DropDownList ddl = new DropDownList(); 

목록 여기에 채워지는 드롭 다운리스트에 목록을 덤프, 다음 분류 :C 번호는 -

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' 

답변

20

같은 목록에 직접 DDL을 바인딩하지 :

ddl.Items.Add(new ListItem(name)); 
이와

ddl.Items.Add(new ListItem(nameList[name].ToString())); 

을 나를 컴파일 오류주고

저녁 식사를 마치 셨습니다.

40

왜 그냥 교체

DropDownList ddl = new DropDownList(); 
ddl.DataSource = nameList; 
ddl.DataBind(); 
0
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())); 
} 

같이 그러나한다.

1

List가 문자열 (이름)에 의해 색인화되지 않고 int로 색인화되기 때문입니다.

foreach (string name in nameList) 
{ 
    ddl.Items.Add(new ListItem(name)); 
} 

수정 예정

0

컬렉션 nameListList이기 때문에 오류가 발생하므로 문자열이 아닌 색인 (이름 사용)을 사용하여 액세스해야합니다.

그래서 당신은 쓸 수 있습니다 : BTW

foreach (string name in nameList){ 
    ddl.Items.Add(name); 
} 

이 작업을 수행하는 가장 좋은 방법은 : 그것은 SharePoint 목록의 경우

ddl.DataSource = nameList; 
ddl.DataBind(); 
2
ddl.DataSource = nameList; 
ddl.DataBind(); 

이 작동하지 않습니다 - 오류 : 데이터 소스가 무효 인 타입 IListSource, IEnumerable 또는 IDataSource 여야합니다. 위의 내용대로 SharePoint 개발자가 List < 문자열 > 대신 SPList를 사용한다고 생각한 경우에 대비하여 결정했습니다.

SPList에 바인딩하는 방법이 있지만 SPListItemCollection을 사용하거나 SPDataSource를 사용하는 것이 좋습니다. SharePoint 개발자는 this blog by Chris O' Brien을 참조하십시오.

관련 문제