19. november 2004 - 16:32Der er
18 kommentarer og 1 løsning
Aflæse værdier dynamisk fra en DropDownList
Jeg har en DropDownList, der er fodret med nogle faste tekster og værdier under Collection. Er det muligt under kørsel af programmet at afæse disse værdier?
agertoft -> Så vidt jeg kan se, udskriver du værdierne til skærmen - jeg ville gerne gemme dem i variable eller en array, så jeg kan bruge dem i anden sammenhæng i programmet.
snepnet -> Når jeg kører din kode får jeg meldingen: Name 'foreach' is not declared. Hvordan skal den erklæres?
string[] mitArray = new string[minArrayListe.Length);
for (int i = 0; i < minArrayListe.Length; i++) { mitArray[i] = minArrayListe[i]; }
Men det kopierer jo i virkeligheden bare dit collection til en anden, og det er der ingen grund til. Hvorfor kan du ikke bruge din oprindelige collection? Der har du jo det hele samlet...
Men jeg er stadig i tvivl om, hvordan jeg får dem ud! Hvis jeg eksempelvis manuelt har lagt følgende ind ved at bruge collectionegenskaben for DropDownList:
Danmark 23 Sverige 55 Norge 89
hvad skriver jeg så helt konkret af programkode, der hiver disse oplysninger ud og lægger dem i en array under kørsel af programmet?
Hvis det SKAL være din DropDownList, du henter fra, vil du gøre sådan:
string[] lande = new string[100]; int i = 0;
foreach(ListeItem li in myDropDownList.Items) { lande[i] = li.Text; i++; lande[i] = li.Value; i++; }
Så får du først selve teksten fra din dropdown i arrayet, og det efterfølgende item i array'et vil så være værdien, som er tilknyttet dit teksten. Sådan kan man ihvertfald gøre det...
Er det bedre at gøre det den anden vej rundt: oprette en array i Page_Load med værdierne til DropDownListen og så indlæse dem i listen? På den måde er værdierne tilgængelige til andre formål. Hvis det er en bedre måde, hvordan får man så arrayet overført til DropDownList collection?
Jeg tror vi snakker forbi hinanden. Jeg kan ikke se, hvorfor du først har en collection, som du bruger som datasource på en dropdownlist, hvorefter du opretter en ny collection med værdierne fra dropdownlisten, som du så kan aflæse fra. Det er jo dobbelt arbejde...
Hvis du prøver at smide din kode, kan jeg se, hvad der vil være det smarteste for dig..
Jeg vil gerne kun skulle vedligeholde værdierne eet sted - derfor vil jeg gerne aflæse dem og det er lige nøjagtig det, du her har vist. Dog får jeg en fejl ved aflæsning af en enkeltværdi (VB):
Dim x as string x = DropDownList1.Items[1].Value
Så giver den følgende besked: BC30311: Value of type 'System.Web.UI.WebControls.ListItemCollection' cannot be converted to 'String'?
Value-metoden returnerer en string i forvejen, så jeg kan ikke se, hvorfor det der ikke skulle virke. Og value'en er jo "DanmarkX", og den skal kunne konverteres til en string...
Men hvorfor henter du en enkeltværdi og ikke i den løkke, som jeg viste? Du skulle jo bruge alle værdierne...?
Hehe ok, jeg har ikke rigtig rodet med VB før.. ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.