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

lista se llena aquí, a continuación, ordenadas:C# - Dumping una lista a una lista desplegable

nameList.Sort(); 

ahora tengo que colocarlo en la lista desplegable, que es donde estoy teniendo problemas (usando foreach):

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

Sin trabajo - ¿Alguna sugerencia? Es dar mi errores de compilación:

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' 

Respuesta

20

Reemplazar esta:

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

con esto:

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

Hecho como la cena.

40

¿Por qué no unir el DDL directamente a la lista como

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

Es su problema.

debería parecerse más a

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

Pero en realidad me gusta la sugerencia de Marcus un poco mejor.

1

Eso sería porque Lista no está indexada por cadena (nombre) sino por ints.

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

Arreglar eso.

0

Obtiene ese error porque la colección nameList es List, por lo que debe acceder a ella utilizando un índice y no una cadena (use el nombre).

para que pueda escribir:

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

Por cierto la mejor manera de hacer esto es:

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

no funciona si se trata de una lista de SharePoint - Error: la fuente de datos es un tipo inválido Debe ser un IListSource, IEnumerable o IDataSource. Decidió intervenir, en caso de que los desarrolladores de SharePoint pensaran que esto era para una SPList en lugar de la cadena < >, como se indicó anteriormente.

Hay una manera de enlazar a una SPList, pero usaría una SPListItemCollection, o iría mejor y usaría un SPDataSource. Para los desarrolladores de SharePoint, consulte this blog by Chris O' Brien.

Cuestiones relacionadas