Avatar billede LarsLj Novice
07. april 2011 - 10:06 Der er 7 kommentarer og
1 løsning

Problem med at hente den valgte værdi fra et drop-down menu

Jeg har indtil flere dropdown menuer på en C#-hjemmeside. Den første fylder jeg data i manuelt, de andre fylder jeg fra en sql database.

Når jeg så skal samle de værdier op, som brugeren vælger, så vil den kun tage værdier fra den dropdown menu, som jeg har fyldt manuelt.

Option-delen på den manuelle dropdown menu ser sådan ud:

<option value="ingenting">V&#230;lg fra liste ...</option>
<option value="tlf-bestilling">Telefonbestilling</option>
<option value="fax-bestilling">Faxbestilling</option>
... osv.


Option-delen på en af de dropdowns, der delvist bliver fyldt fra en database, ser sådan ud

<option value="Vælg fra liste ...">V&#230;lg fra liste...</option>
<option value="Kunde 1">Kunde 1</option>
<option value="Kunde 2">Kunde 2</option>

Den første værdi "Vælg fra liste", fylder jeg selv i, resten henter den fra databasen.

Når jeg skal opsamle data, bruger jeg i begge tilfælde koden

string minStreng = dropdown_01.SelectedValue.ToString();

Er der nogen, der kan fortælle mig, hvorfor koden kun virker i det tilfælde, hvor jeg manuelt fylder alle data ind i min drop-down menu? Eller bedre, hvad skal jeg gøre for at fange data også fra de tabeller, som er fyldt fra databasen med en array-list?

På forhånd tak for hjælpen
Lars
Avatar billede Syska Mester
07. april 2011 - 10:23 #1
Du mangler en masse kode ... overstående er html output.

Codebehind mangler ... specielt din load og callback.

mvh
Avatar billede LarsLj Novice
07. april 2011 - 11:48 #2
Hurtigt svar :-)

Her er koden, på forhånd tak for hjælpen. Jeg er kørt fast!

Vh
Lars

Code-behind:

Til den første dropdown, som er manuel, er det "bare" tastet ind:

<asp:DropDownList ID="ddl_01_manuel" runat="server">
<asp:ListItem Value="ingenting">Vælg fra liste ...</asp:ListItem>
<option value="tlf-bestilling">Telefonbestilling</option>
<option value="fax-bestilling">Faxbestilling</option>
</asp:DropDownList>

Til den næste dropdown, hvor den 1. linje er manuel, men hvor resten hentes ind fra databasen, ser det sådan ud:
<asp:DropDownList ID="ddl_02_kunder" runat="server">
<option value="Vælg fra liste ...">V&#230;lg fra liste...</option>
<option value="Kunde 1">Kunde 1</option>
<option value="Kunde 2">Kunde 2</option>
</asp:DropDownList>


Med følgende code-behind:

ArrayList virksomhed_organisation_list = new ArrayList();
procedure = "proc_hent_alle_virksomheder";
kolonne_navn = "Virksomhed_organisation";

connex_admin.udfyld_dropdown(procedure, kolonne_navn, out virksomhed_organisation_list, out fejl);

ddl_02_kunder.DataSource = virksomhed_organisation_list;
ddl_02_kunder.DataBind();


Proceduren i klassen connex_admin, som hedder "udfyld_dropdown", bygger en arraylist eller returnerer en fejl. Det er en generel procedure, jeg bruger den til at fylde flere forskellige dropdowns:


public void udfyld_dropdown(string procedure, string kolonne_navn, out ArrayList rowlist, out bool fejl)
    {

        fejl = false;

        connex connex = new connex();
        SqlConnection connection = new SqlConnection(connex.connection());

        SqlCommand cmd01 = new SqlCommand(procedure, connection);
        cmd01.CommandType = CommandType.StoredProcedure;

        ArrayList rowList_lokal = new ArrayList();
        rowList_lokal.Add("Vælg fra liste ...");

        try
        {
            connection.Open();
            SqlDataReader reader = cmd01.ExecuteReader();

            while (reader.Read())
            {
                // vi skal sikre os, at det ikke er en null-værdi og at der ER en værdi i feltet
                string value_db = reader[kolonne_navn].ToString();
               
                string tjek_streng = object.ReferenceEquals("", String.Empty).ToString();

                if (value_db.Length > 1)
                    if(value_db != null)
                    {
                        {
                            rowList_lokal.Add(value_db);
                        }
                    }
            }
        }
        catch
        {
            fejl = true;
        }
        finally
        {
            connection.Close();
        }

        rowlist = rowList_lokal;
    }
Avatar billede Syska Mester
07. april 2011 - 13:05 #3
Problemet er at du laver en databind igen ... du mangler stadig lidt kode, men jeg går ud fra at du laver din DataBind i din Load ... og der kan det gå galt.


if(!IsPostBack)
{
    // Her skal du lave din databinding, hvis der kommer et GET request, ved postback holder ViewState styr på dine værdier.
}

Og det skal ind i din Load event i din CodeBehind.
Avatar billede LarsLj Novice
07. april 2011 - 13:30 #4
Hej Buzzz

Dit forslag med isPostBack ramte plet. Nogle gange kan komplicerede problemer have enkele svar

Tak for din hjælp, point er på vej og tak for hjælpen :-)

Venlig hilsen
Lars
Avatar billede Syska Mester
07. april 2011 - 13:50 #5
svar.

Ja, ofte er det ViewState der driller :-)

mvh
Avatar billede Syska Mester
07. april 2011 - 14:02 #6
svar
Avatar billede vejmand Juniormester
07. april 2011 - 14:02 #7
buzzzz >> Du skal semde et "Svar" så du kan tildeles point. Det var en "Kommentar" du fik sendt.  :-)
Avatar billede Syska Mester
07. april 2011 - 14:22 #8
hahha, ja, det fandt jeg ud af ... omend jeg også så det før dig :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Politiets Efterretningstjeneste

Ambitiøs Enterprisearkitekt til PET

Københavns Professionshøjskole

Nytænkende og agil IT-projektleder

Udviklings- og Forenklingsstyrelsen

Tech Lead til Java-backend udviklingsteam

Udviklings- og Forenklingsstyrelsen

Generalister til PMO og strategiimplementering

Netcompany A/S

Test Specialist