Avatar billede keenkbh Nybegynder
03. december 2006 - 16:19 Der er 1 kommentar og
1 løsning

Kan kun ændre nederste antal

Hej eksperter.

Jeg har følgende problem. Jeg sidder og prøver at lave en lille indkøbskurv, hvor man ved et tryk på en knap opdaterer indholdet af kurven.
Problemet er så, at hvis jeg har flere ting i kurven, så kan jeg kun ændre det nederste antal varer, for når jeg trykker opdatér, bliver alle andre linjer sat til samme antal som nederste linje.

min opdateringskode ser således ud:

protected void opdater_Click(object sender, EventArgs e)
    {
        foreach(DataGridItem dr in dgKurv.Items)
        {
            CheckBox c = (CheckBox)dr.FindControl("c");
            TextBox antal = (TextBox)dr.FindControl("antal");

            if(c.Checked == true)
            {
                varer.RemoveAt(dr.ItemIndex);

                msg.Text = "vare med index: " + dr.ItemIndex.ToString() + " blev slettet";
               
            }
        }

        foreach (DataGridItem dr in dgKurv.Items)
        {
            TextBox antal = (TextBox)dr.FindControl("antal");

            foreach (vare v in varer)
            {
                if (Convert.ToInt32(antal.Text.ToString()) != v.Antal)
                {
                    v.Antal = Convert.ToInt32(antal.Text.ToString());
                }
            }
        }
        samletPris();
        BindData();
    }

min vare klasse ser således ud:

public class vare
    {
        public string vareID;
        public double prisStk;
        public int antal;
        //testing
        public double prisIalt;

        public vare(string vareID,double prisStk,int antal)
        {
            this.vareID = vareID;
            this.prisStk = prisStk;
            this.antal = antal;
            //testing
            prisIalt = this.prisStk * this.antal;
        }

        public string VareID
        {
            get
            {
                return vareID;
            }
            set
            {
                vareID = value;
            }
        }

        public double PrisStk
        {
            get
            {
                return prisStk;
            }
            set
            {
                prisStk = value;
            }
        }

        public int Antal
        {
            get
            {
                return antal;
            }
            set
            {
                antal = value;
                PrisIalt = PrisStk * this.antal;
            }
        }

        public double PrisIalt
        {
            get
            {
                return prisIalt;
            }
            set
            {
                prisIalt = value;
            }
        }
    }

Nogen forslag? Jeg har sikkert fucket up i mine iterationer...
Avatar billede keenkbh Nybegynder
03. december 2006 - 17:08 #1
Jeg tror det er den her iteration den er gal med:

foreach (DataGridItem dr in dgKurv.Items)
        {
            TextBox antal = (TextBox)dr.FindControl("antal");

            foreach (vare v in varer)
            {
                if (Convert.ToInt32(antal.Text.ToString()) != v.Antal)
                {
                    v.Antal = Convert.ToInt32(antal.Text.ToString());
                }
            }
        }

Men det er bare lige med at få den lavet om...
Avatar billede keenkbh Nybegynder
03. december 2006 - 17:33 #2
Tror jeg har fundet ud af det...

Jeg tilføjede 'bare' et tjek, så den kun ændrede den række den var nået til.

Til info, hvis andre får samme problem:

foreach (DataGridItem dr in dgKurv.Items)
        {
            TextBox antal = (TextBox)dr.FindControl("antal");

            foreach (vare v in varer)
            {
                if(dr.ItemIndex == varer.IndexOf(v))
                {
                    if (Convert.ToInt32(antal.Text.ToString()) != v.Antal)
                    {
                        v.Antal = Convert.ToInt32(antal.Text.ToString());
                    }
                }
            }
        }
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



Seneste spørgsmål Seneste aktivitet
I dag 10:28 PDFEngine Af barth i Andet software
I går 22:40 Butte indhold i celler Af lurup i Excel
I går 15:24 Power Query Af djsimonsen i Excel
I går 14:43 Hvis ikke på liste, tilføj værdier til liste Af TheLibrarian i Excel
I går 11:33 Windows 11 Af ranni i Windows