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

Liste hier ausgefüllt ist, dann sortiert:C# - Dumping eine Liste mit einem Dropdownlist

nameList.Sort(); 

Jetzt muss ich es in die Dropdownlist fallen, das ist, wo ich Probleme habe (mit foreach):

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

Kein Workie - irgendwelche Vorschläge? Es gibt mir Fehler kompilieren:

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' 

Antwort

20

Ersetzen Sie diese:

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

mit diesem:

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

Fertig wie Abendessen.

40

Warum nicht nur die DDL binden direkt an die Liste wie

DropDownList ddl = new DropDownList(); 
ddl.DataSource = nameList; 
ddl.DataBind(); 
0
foreach (string name in nameList){ 
     ddl.Items.Add(new ListItem(nameList[name].ToString())); 
    } 

Ist dein Problem.

sollte es aussehen

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

aber ich mag Vorschlag Marcus tatsächlich ein wenig besser.

1

Das wäre, weil List nicht durch Zeichenfolge (Name), sondern durch Ints indiziert ist.

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

Wird das beheben.

0

Sie erhalten diesen Fehler, weil die Sammlung nameList eine List ist, so dass Sie zugreifen müssen, indem Sie einen Index verwenden, der keine Zeichenfolge ist (Sie verwenden Name).

So können Sie schreiben:

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

BTW der beste Weg, dies zu tun ist:

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

funktioniert nicht, wenn es sich um eine Sharepoint-Liste ist - Fehler: Datenquelle ein ungültiger Typ Es muss entweder eine IListSource, IEnumerable oder IDataSource sein. Entschied sich, hereinzuhallen, falls irgendwelche SharePoint-Entwickler dachten, dies sei für eine SPList statt der Liste <string>, wie oben geschrieben.

Es gibt eine Möglichkeit, an eine SPList zu binden, aber Sie verwenden eine SPListItemCollection, oder gehen Sie besser und verwenden Sie eine SPDataSource. Informationen zu den SharePoint-Entwicklern finden Sie unter this blog by Chris O' Brien.