Avatar billede cowboyen Nybegynder
22. oktober 2003 - 14:02 Der er 5 kommentarer og
2 løsninger

Session problem

Jeg har en side med en tekstboks. Her indtaster jeg et tal og klikker på en submit knap. Der bliver nu dynamisk genereret det antal tekstbokse som indtastet, på den samme side, samt en submit knap mere der hedder Fortsæt. Disse tekstbokse kommer så til og hedde foeler1, foeler2, foeler3 osv.
Mit problem ligger i og få indholdet af disse tesktbokse over i en session når jeg klikker på Fortsæt. Jeg have tænkt i denne dur:
Session["foeler"+count] = @foeler + count
Ved godt det ikke virker.
Håber i forstår mit problem.
Avatar billede nielslbeck Nybegynder
22. oktober 2003 - 14:27 #1
Hvis du vil gemme teksten fra foeler1 i din session kan du skrive:

Session["foeler1"] = foeler1.Text;
Avatar billede finger Nybegynder
22. oktober 2003 - 14:29 #2
Jeg vil nok samtidigt med at du oprettet dine dynamiske textbokse, ligge en reference til hver af dem i en textbox array. når du så trykker på forsæt, kan du løbe arrayet i gennem med fx en foreach og gemme i session.
Avatar billede thor.ostergaard Nybegynder
22. oktober 2003 - 17:42 #3
Jeg kan ikke helt gennemskue, hvad det er du er i gang med, men jeg har på fornemmelsen, at du er på vej over åen efter vand...

Kan du ikke beskrive mere generelt, hvad det er du gerne vil lave - så kan det være der er én der har en god idé til hvordan man kan gøre det
Avatar billede cowboyen Nybegynder
22. oktober 2003 - 17:43 #4
finger >> Jeg har lagt de dynamiske tekstbokse over i et tekstbox array. Nu er problemet og få overført de variabler der ligger i de dynamiske tekstbokse. Har prøvet flere ting.
Min kode ser således ud.

Denne funktion bliver kaldt når jeg indtaster et tal og klikker ok:

public void CreateTextBoxes(Object sender, EventArgs e) {
            int n = Int32.Parse(txtTBCount.Text);
            Session["antalFoelere"] = n;
            overskriftNavngivning.Text = "Deres web-termometer har " + Session["antalFoelere"] + " følere tilsluttet. De kan nu navngive disse følere, f.eks. (Serverrum).";

            // now, create n TextBoxes, adding them to the PlaceHolder TextBoxesHere
            for (int i = 0; i < n; i++)
            {
                TextBoxesHere.Controls.Add(new Label());
                TextBoxesHere.Controls.Add(new TextBox());
                Literal l = new Literal();
                l.Text = "<Br>";
                TextBoxesHere.Controls.Add(l);
            }
            Session["antalFoelere"] = txtTBCount.Text;
            // now, set the Text property of each TextBox
            IterateThroughChildren(this);
        }

...som kalder denne funktion:

int count = 1;

        public void IterateThroughChildren(Control parent)
        {
            TextBox[] tekstbokse = new TextBox[Convert.ToInt32(Session["antalFoelere"])+1];
            foreach (Control c in parent.Controls)
            {
                if (c.GetType().ToString().Equals("System.Web.UI.WebControls.Label") && c.ID == null)
                {
                    ((Label) c).Text = "Føler " + count.ToString() + ": ";
                }
               
                if (c.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox") && c.ID == null)
                {
                    ((TextBox) c).ID = "foeler" + count.ToString();
                    ((TextBox) c).Columns = 5;
                    tekstbokse[count] = ((TextBox) c);
                    count++;
                }
       
                if (c.Controls.Count > 0)
                {         
                    IterateThroughChildren(c);
                }
            }
            int count2 = 1;
            foreach (TextBox i in tekstbokse)
            {
                Session["foelerID"+count2] = i;
                count2++;
            }
        }

Bagefter udfylder man de tekstbokse der bliver generet hvorefter de skal puttes i en session. Men ved sgu't helt hvordan.
Avatar billede finger Nybegynder
22. oktober 2003 - 18:22 #5
mit foreslag gik mere i retning af dette:

--------(Pseudo-kode)------
1:Bruger indtaster det ønskede antal af textboxe der skal genereres og trykker ok:
{
  TextBox[] myBoxes = new TextBox[antal intastet af bruger];

  for(antal indtastet af bruger)
  {
  generer textbox og label og tilføj til controls osv..

  myBoxes[nummerLoop] = genereret textbox;
  Session["myBoxList"] = myBoxes;
  }
}



På den nye side:
{
  TextBox[] myBoxes = (TextBox[])Session["myBoxList"];
  foreach (TextBox i in myBoxes)
  {
      string desiredvalue = i.Text;
  }
}


Jeg aner ikke om det kan lade sig gøre, men den var en ide jeg fik.
Avatar billede cowboyen Nybegynder
22. oktober 2003 - 20:39 #6
Det skal lige siges at det hele sker på samme side. Det er først når der klikkes på Fortsæt at man går til en ny side.
Avatar billede cowboyen Nybegynder
14. september 2005 - 14:01 #7
lukker
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