Avatar billede cowboyen Nybegynder
21. oktober 2003 - 16:41 Der er 10 kommentarer og
1 løsning

Placeholder problem

Jeg har mellem 1 og 8 tekstbokse i min placeholder. P.T. bliver de vist lige efter efter hinanden uden linieskift. Er der nogen der ved hvordan man får et linieskift ind imellem sine elementer?
Avatar billede nielslbeck Nybegynder
21. oktober 2003 - 16:55 #1
Hvis vi snakker ASP.NET kan du indsætte et <Br> efter hvert element. Hvis vi ikke snakker ASP.NET tror jeg ikke jeg er helt med på hvad problemet er...
Avatar billede nielslbeck Nybegynder
21. oktober 2003 - 16:58 #2
Du kan bruge:

Literal l = new Literal();
l.Text = "<Br>";
PlaceHolder1.Controls.Add(l);
Avatar billede cowboyen Nybegynder
21. oktober 2003 - 17:01 #3
Det er ASP.NET med C#.
Det har jeg prøvet, men synes ikke rigtig det virker. Min kode er som følgende:

public void CreateTextBoxes(Object sender, EventArgs e)
        {
            int n = Int32.Parse(txtTBCount.Text);
     
            // 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());
            }
     
            // now, set the Text property of each TextBox
            IterateThroughChildren(this);
        }

Dette bliver lagt i en placeholder der er erklæret således:

<asp:PlaceHolder runat="server" id="TextBoxesHere" /></p>

Hvor vil du mene at den break skal være og hvordan skal den skrives ind?
Avatar billede nielslbeck Nybegynder
21. oktober 2003 - 17:05 #4
Skulle kunne gøres sådan:

public void CreateTextBoxes(Object sender, EventArgs e) {
            int n = Int32.Parse(txtTBCount.Text);
            Literal l = new Literal();
            l.Text = "<Br>";
     
            // 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());
                TextBoxesHere.Controls.Add(l);
            }
     
            // now, set the Text property of each TextBox
            IterateThroughChildren(this);
}

Har ikke testet det, men det skulle være godt nok :-)
Avatar billede cowboyen Nybegynder
21. oktober 2003 - 17:08 #5
Fik denne fejl:

"Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request."
Avatar billede nielslbeck Nybegynder
21. oktober 2003 - 17:22 #6
Okay... og den fejl får du ikke hvis du ikke har min tilføjelse med?
Avatar billede cowboyen Nybegynder
21. oktober 2003 - 17:24 #7
nej, der viser den bare alle elementerne(tekstboksene) lige efter hinanden uden linieskift
Avatar billede cowboyen Nybegynder
21. oktober 2003 - 17:26 #8
Det er heller ikke sikkert det er måden på det. Jeg skal have genereret mellem 1 og 8 dynamiske teksbokse der her deres eget id, hvorefter det skal lagres i en session. Brugeren skal indtaste antallet i en tekstboks, og så skal tilsvarende antal af tekstbokse, med unik, vise på samme eller en ny side.
Avatar billede nielslbeck Nybegynder
21. oktober 2003 - 17:27 #9
Prøv med:

public void CreateTextBoxes(Object sender, EventArgs e) {
            int n = Int32.Parse(txtTBCount.Text);
     
            // 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);
            }
     
            // now, set the Text property of each TextBox
            IterateThroughChildren(this);
}

Hvis det heller ikke virker, må jeg vist vente med at hjæpe mere, til jeg er i nærheden af min egen maskine, så jeg kan teste det jeg sender til dig :-)
Avatar billede cowboyen Nybegynder
21. oktober 2003 - 17:32 #10
Det virkede sgu. Jeg takker for hjælpen.
Avatar billede nielslbeck Nybegynder
21. oktober 2003 - 17:33 #11
Lyder godt :-)
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