Avatar billede paradise_lost Nybegynder
09. oktober 2010 - 14:49 Der er 5 kommentarer

Slette Session item

Hej

Jeg har lavet en simpel indkøbskurv som gemmer de ønskede varer i en session og viser indholdet med en repeater. Men skal have muligehed for at slette en vare også hvis dette ønskes.

Det skal gøres med Session.Remove("") ikke? Hvordan sletter jeg lige præcis den vare som der klikkes på.

Håber jeg har forklaret mig ordentligt :)

På forhånd tak
Avatar billede keysersoze Guru
09. oktober 2010 - 16:07 #1
Hvordan du gør afhænger helt og aldeles af hvordan du har gemt de enkelte varer - så hvis du forventer et svar skal du nok komme med lidt mere kode.
Avatar billede paradise_lost Nybegynder
09. oktober 2010 - 16:38 #2
Selvf :)

Koden:

protected void Vare1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {
        int antal = 0;
        int.TryParse(txtVare1.Text, out antal);
        AddVare("Produktnavn", "Varenr", antal, 100);
    }

    protected void Vare2_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {
        int antal = 0;
        int.TryParse(txtVare2.Text, out antal);
        AddVare("Produktnavn", "Varenr", antal, 100);
    }

    private void AddVare(string name, string number, int count, int price)
    {
        List<Vare> varer = Session["varer"] as List<Vare>;
        if (varer == null)
        {
            varer = new List<Vare>();
        }
       
        Vare v = varer.Where(x => x.Varenr == name).FirstOrDefault();
        if (v != null)
        {
            v.Antal += count;
            for (int i = 0; i < varer.Count; i++)
            {
                if (varer[i].Varenr == v.Varenr)
                {
                    varer[i] = v;
                }
            }
        }
        else
        {
            Vare vare = new Vare();
            vare.Varenr = number;
            vare.Varenavn = name;
            vare.Antal = count;
            vare.Pris = price;
            varer.Add(vare);
        }
        Session["varer"] = varer;
    }
Avatar billede keysersoze Guru
11. oktober 2010 - 17:49 #3
Du skal jo "bare" gøre stort som din AddVare - bare omvendt. Er der mere end én af en vare skal du trække fra i Antal og ellers kan du bruge Remove på din List til at fjerne en vare helt.
Avatar billede paradise_lost Nybegynder
22. oktober 2010 - 20:26 #4
Tak for svaret

Men må indrømme at jeg ikke helt ved hvordan jeg "bare" skal lave det :) Jeg er ny til .NET og det jeg har lavet indtil nu har jeg fået hjælp til af en kammerat.
Avatar billede hooh Nybegynder
09. december 2010 - 16:15 #5
noget lig.

private void DeleteVare(string number)
    {
        List<Vare> varer = Session["varer"] as List<Vare>;
            v.Antal += count;
            for (int i = 0; i < varer.Count; i++)
            {
                if (varer[i].Varenr == number)
                {
                    varer.RemoveAt(i);
                    break;
                }
            }
        Session["varer"] = varer;
    }
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
Kurser inden for grundlæggende programmering

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