Avatar billede the_party_dog Nybegynder
10. september 2005 - 13:32 Der er 5 kommentarer og
1 løsning

Listbox, selection problem

Hej O'høje gurus :)

Jeg har en webform som fylder en listbox ved at

lstBooked.Items.Add(new ListItem(string,"");
lstBooked.Items.Add(new ListItem(string,"0");
lstBooked.Items.Add(new ListItem(string,"1");

Dette sker i en løkke, som tester for nogle små ting, og afgøre hvilken der skal bruges. Dette virker uden problem.

Så har jeg sat den til at kunne Multiple select, fordi jeg gerne vil lave en arraylist med alle valgte items i. Her går det galt.
F.eks.

Jeg har valgt 4 items i listbox'en, men den læser kun 3 ud. Samtidig med er det ikke de rigtige items den læser ud.

Min løkke til at teste om items er selected er følgende:

foreach(ListItem L in lstBooked.Items)
            {
                if(L.Selected)
                {
                    if(L.Value == "")
                    {
                        araReservations.Add(L.Text);
                    }
                    else
                    {
                        araReservations.Add(Convert.ToString(L.Text + L.Value));
                    }
                }           
            }

Burde dette stykke kode ikke virke perfekt? Jeg har brugt 4 timer på sammen med Debug/Breakpoint, og kigget om det gjorde det rigtigt. Jeg har valgt 3 ting f.eks, og 2 af dem kom slet ikke igennem den første if sætning.
Avatar billede snepnet Nybegynder
11. september 2005 - 19:20 #1
den slags burde ikke give de store problemer - men du kan lige se om det du har afviger fra dette eksempel, som fungerer fint:

// i aspx-filen
<asp:ListBox ID="lb" runat="server"></asp:ListBox><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

// og i din code-behind
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        lb.Items.Add("a");
        lb.Items.Add("b");
        lb.Items.Add("c");
        lb.Items.Add("d");
        lb.Items.Add("e");
        lb.SelectionMode = ListSelectionMode.Multiple;
    }
}

// og en handler til knap-trykket
protected void Button1_Click(object sender, EventArgs e)
{
    foreach (ListItem item in lb.Items)
    {
        if (item.Selected)
        {
            Response.Write(item.Text + "<br>");
        }
    }
}

mvh
Avatar billede the_party_dog Nybegynder
12. september 2005 - 19:30 #2
Din lille test virker bare perfekt, og det var jo nemt nok. Prøvede at ligge Response.Write koden over i min webform, og måtte hurtig sande at der virkelig var problemer.

Når jeg valgte f.eks 2 items midt i det hele(nr.5 , nr8), skrev response.write nr.1 og nr.4 ud på min side. Jeg ved ikke mit vildste råd mere.

Jeg har fundet ud af følgende:

            if(!IsPostBack)
            {
                lb.Items.Add(new ListItem("a",""));
                lb.Items.Add(new ListItem("b",""));
                lb.Items.Add(new ListItem("c",""));
                lb.Items.Add(new ListItem("d",""));
                lb.Items.Add(new ListItem("e",""));
                lb.SelectionMode = ListSelectionMode.Multiple;
            }

Prøv at lav dit eget eksempel med det kode, og se hvor sjove resultater du får ud af det :) Af en grund som jeg ikke kan forklare, virker det ikke når man tilføjer til Items collection'en i en listbox, ved hjælp at listItem objekter.

Hvis vi nu kunne få arne til at kigge ind, så kunne det være han havde et godt svar....
Avatar billede snepnet Nybegynder
12. september 2005 - 19:33 #3
jo - det virker lige så fint, men du må ikke give dine items samme value, så går den helt bananas, såh... prøv sådan her:

            if(!IsPostBack)
            {
                lb.Items.Add(new ListItem("a","1"));
                lb.Items.Add(new ListItem("b","2"));
                lb.Items.Add(new ListItem("c","3"));
                lb.Items.Add(new ListItem("d","4"));
                lb.Items.Add(new ListItem("e","5"));
                lb.SelectionMode = ListSelectionMode.Multiple;
            }


mvh
Avatar billede snepnet Nybegynder
12. september 2005 - 19:34 #4
når du bare stikker den nogle strings bliver din value det samme som den string du giver den, men i dit eksempel fortæller du specifikt at value skal være "" - og jeg vil tro det er derfor det kikser.
mvh
Avatar billede the_party_dog Nybegynder
13. september 2005 - 11:23 #5
Okay... Det vidste jeg ikke, det havde jeg ikke forstået på det materiale jeg læste. Jeg bruger i mit tilfælde Value feltet som en "Skjult" værdi, for at skjule et enkelt tegn for brugeren.

Men jeg tester lige når jeg kommer hjem, og indtil videre bukker jeg og takker mange gange for tiden. :)
Avatar billede snepnet Nybegynder
16. september 2005 - 00:09 #6
det var i hvert fald saa lidt.
haaber det funger som det skal.
mvh
(du kan lige faa et svar her, hvis alt skulle vaere vel)
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