Avatar billede jps6kb Novice
20. december 2009 - 13:38 Der er 2 kommentarer og
1 løsning

Behold værdier i UserControls i Session

Hey,

Jeg har en usercontrol der indeholder tre tekstbokse. (A, B, C)
Disse kan jeg ved klik tilføje til en placeholder. (En usercontrol pr. klik).
For at vise flere usercontrols i placeholderen er jeg nødt til, at have usercontrols i en ArrayList som jeg gemmer i en session. Så hver gang jeg klikker tilføj, Laver jeg en ny ArrayList og tilføjer elementerne fra placeholderen og den nye - og lægger den i min session.

Mit problem:
Jeg kan vælge at tilføje usercontrol med A=1, A=2, A=3.
Men når jeg når til den tredie tilføjelse, så ændrer de to første sig.
Så det kunne se sådan her ud:

[Tilføj A=1]
Resultat:
A:1

[Tilføj A=2]
Resultat:
A:1
A:2

[Tilføj A=3]
Resultat:
A:1
A:1
A:3

[Tilføj A=2]
Resultat:
A:1
A:1
A:1
A:2

I don't get it??? :-/

Kode:

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            DrawLines();
            lblView.Text = "";
            foreach (ucLine c in (ArrayList)Session["tilbudlinier"])
            {
                lblView.Text = "C, ";
            }
        }
        catch { }
        if (!IsPostBack)
        {
            // Hent services
            DataClassesDataContext db = new DataClassesDataContext();
            var services = from s in db.Services orderby s.name select s;
            foreach (Service serv in services)
            {
                ddlService.Items.Add(new ListItem(serv.name + " (" + serv.price + " DKK / " + serv.price_unit + ")", serv.id.ToString()));
            }

            // Hent kunder
            var customers = from c in db.Customers orderby c.name select c;
            foreach (Customer cust in customers)
            {
                ddlKunde.Items.Add(new ListItem(cust.name, cust.id.ToString()));
            }
            Session["tilbud_linier"] = null;
        }
    }
   
    protected void btnTilfoj_Click(object sender, EventArgs e)
    {
        ArrayList lines = new ArrayList();
        foreach (ucLine l in phLines.Controls)
        {
            lines.Add(l);
        }
       
        int service_id = Convert.ToInt32(ddlService.SelectedValue);
        ucLine line = (ucLine)LoadControl("ucLine.ascx");
        DataClassesDataContext db = new DataClassesDataContext();
        var service = (from s in db.Services where s.id == service_id select s).Single();
        line.Initiate(service.id, service.name, service.price.ToString(), service.price_unit);

        lines.Add(line);
        Session["tilbud_linier"] = lines;
        DrawLines();
    }

    private void DrawLines()
    {
        phLines.Controls.Clear();
        ArrayList lines = (ArrayList)Session["tilbud_linier"];
        foreach (ucLine line in lines)
        {
            phLines.Controls.Add(line);
        }
    }
Avatar billede sirius Nybegynder
21. december 2009 - 09:23 #1
prøv med:
    protected void btnTilfoj_Click(object sender, EventArgs e)
    {
        ArrayList lines = (ArrayList)Session["tilbud_linier"];
       
        int service_id = Convert.ToInt32(ddlService.SelectedValue);
        ucLine line = (ucLine)LoadControl("ucLine.ascx");
        DataClassesDataContext db = new DataClassesDataContext();
        var service = (from s in db.Services where s.id == service_id select s).Single();
        line.Initiate(service.id, service.name, service.price.ToString(), service.price_unit);

        lines.Add(line);
        Session["tilbud_linier"] = lines;
        DrawLines();
    }
Avatar billede jps6kb Novice
07. januar 2010 - 22:09 #2
Det gav noget - smid et svar.
Avatar billede sirius Nybegynder
07. januar 2010 - 22:40 #3
svar :-)
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

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