C# – Dumping-en liste til en dropdownlist

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

Liste er befolket her, derefter sorteres:

nameList.Sort();

Nu har jeg brug for at slippe det i dropdownlist, som er der, hvor jeg har problemer (ved hjælp af foreach):

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

Ingen workie – nogen forslag? Det giver mig compile fejl:

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'

OriginalForfatteren scrot | 2008-10-29

6 svar

  1. 21

    Erstatte denne:

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

    med dette:

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

    Gjort som aftensmad.

    OriginalForfatteren Mike Burton

  2. 41

    Hvorfor ikke bare binde DDL direkte til den Liste, som

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

    OriginalForfatteren Marcus King

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

    Virker ikke hvis det er en SharePoint-liste – Fejl: Data source er en ugyldig type. Det skal enten være en IListSource, IEnumerable, eller IDataSource. Besluttet at kime, i tilfælde af at nogen SharePoint-udviklere, der troede, at dette var for en SPList i stedet for Listen<string>, som det blev skrevet ovenfor.

    Der er en måde at binde sig til en SPList, men du vil bruge en SPListItemCollection, eller gå en bedre og bruge en SPDataSource. For SharePoint-udviklere, se denne blog ved at Chris O’ Brien.

    OriginalForfatteren Tom

  4. 1

    Der ville være, fordi Listen ikke er indekseret af string (navn), men ved at ints.

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

    Vil ordne det.

    OriginalForfatteren wprl

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

    Er dit problem.

    at det skulle se mere som

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

    Men jeg kan faktisk godt lide Marcus’ forslag til et lidt bedre.

    OriginalForfatteren Nicholas Mancuso

  6. 0

    Du får denne fejl, fordi den indsamling nameList er en List så skal du få adgang til det ved hjælp af et indeks ikke er en streng (du bruger navn).

    Så kan du skrive:

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

    BTW den bedste måde at gøre dette på er:

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

    OriginalForfatteren ema

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *