Frage

List<String> nameList = new List<String>();
DropDownList ddl = new DropDownList();

Liste wird hier bevölkert, dann sortiert:

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()));
}

Keine 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'
War es hilfreich?

Lösung

Ersetzen Sie diese:

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

mit dieser:

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

Fertig wie Abendessen.

Andere Tipps

Warum bindet nicht nur die DDL direkt auf die Liste wie

DropDownList ddl = new DropDownList();
ddl.DataSource = nameList;
ddl.DataBind();
ddl.DataSource = nameList; 
ddl.DataBind(); 

funktioniert nicht, wenn es eine Sharepoint-Liste ist - Fehler: Datenquelle ist ein ungültiger Typ. Es muss entweder ein IListSource, IEnumerable oder IDataSource sein. Beschlossen zu läuten, falls all Sharepoint-Entwickler gedacht, dies für eine SPList war anstelle von List , wie oben geschrieben wurde.

Es gibt einen Weg zu einem SPList zu binden, aber Sie würden eine SPListItemCollection verwenden, oder gehen Sie eine bessere und eine SPDataSource verwenden. Für die Sharepoint-Entwickler finden Sie unter diesen Blog von Chris O‘Brien .

Das wäre da Liste nicht von String (Name), sondern durch Ints indiziert ist.

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

Wird das in Ordnung bringen.

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

Ist Ihr Problem.

es sollte aussehen

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

Aber ich tatsächlich wie Marcus' Vorschlag ein wenig besser.

Sie diesen Fehler erhalten, weil die Sammlung nameList ein List ist, so dass Sie es mit einem Index keinen String zugreifen müssen (Sie verwenden Name).

Sie können also schreiben:

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

BTW der beste Weg, dies zu tun ist:

ddl.DataSource = nameList;
ddl.DataBind();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top