Avatar billede bumle90 Nybegynder
07. september 2004 - 16:41 Der er 9 kommentarer

Dynamisk oprettelse af serverkontroller

Hvordan opretter jeg dynamisk serverkontroller og placerer disse på siden.
Altså hvis jeg fx. skal have x antal tekstfelter stående på siden ud fra et databaseopslag.
Grunden til at det skal være serverkontroller og ikke almindelig html er at jeg skal have nogle requiredFieldvalidators på disse. Så det er også en del af spørgsmålet, altså hvordan jeg laver et tekstfelt-serverkontrol dynamisk, binder en requiredFieldvalidator på og putter den ind i en table jeg har stående på min aspx-side.
Jeg bruger altså ikke noget med absolutte positioner....
Avatar billede snepnet Nybegynder
08. september 2004 - 01:47 #1
hej der bumle :o)

hvad med noget i denne stil :
(hvis du skulle ligge inde med en datakilde du kan iterere over... f.eks. en tabel i et dataset... her har jeg bare brugt nogle strings).

protected HtmlForm Form1;

private void Page_Load(object sender, System.EventArgs e)
{
    // Put user code to initialize the page here
    string[] strings = {"hej","med","dig"};
   
    Table tbl = new Table();
    TableRow tr = null;
    TableCell cell = null;
    TextBox tb = null;
    Label l = null;
    RequiredFieldValidator req = null;
   
    foreach(string s in strings)
    {
        l = new Label();
        l.Text = s;
        tb = new TextBox();
        tb.ID = s;
        req = new RequiredFieldValidator();
        req.ErrorMessage = "Farveller der";
        req.ControlToValidate = tb.ID;
       
        tr = new TableRow();

        cell = new TableCell();
        cell.Controls.Add(l);
        tr.Cells.Add(cell);

        cell = new TableCell();
        cell.Controls.Add(tb);
        tr.Cells.Add(cell);

        cell = new TableCell();
        cell.Controls.Add(req);
        tr.Cells.Add(cell);

        tbl.Rows.Add(tr);
    }

    Form1.Controls.Add(tbl);           
}

Jeg angiver her selv et ID, og det skal du sørge for er unikt... Alternativt skal du vente med at smide dine validators ind - indtil du er sikker på at have et unikt id på dine tekstbokse (sker når de klaskes ind i kontroltræet).
Avatar billede bumle90 Nybegynder
10. september 2004 - 11:52 #2
Hallløøj Snepnet :)
Manden jeg gerne ville se herinde :D
Mmm jeg tænkte på...når du skriver
Form1.Controls.Add(tbl);
Hvorhenne på siden bliver denne så tilføjet?
Skal den ikke bindes sammen med et tag på aspx-siden, der indikerer tabellens position i forhold til resten af elementerne på siden?
Avatar billede bumle90 Nybegynder
10. september 2004 - 12:56 #3
protected HtmlForm Form1;
Hvordan har den noget med resten af siden at gøre?
Sådan en har jeg ikke......Jeg tror ikke jeg er helt med på ideen her :)
Avatar billede snepnet Nybegynder
10. september 2004 - 16:57 #4
hej bumle :o)
du bør have en serverside form i din aspx-fil. hvis du vil tilgå den fra koden laver du bare en dekleration i toppen:
protected HtmlForm Form1; // det er vigtigt at navnet er identisk med det der står i aspx-filen.

På den måde kan du så lave den jeg skrev - altså Form1.Controls.Add(...);

Kontrollerne vil så bare optræde på formen i den rækkefølge du sætter dem ind.

Alternativt kan du sætte f.eks. et panel ind... Det kan du gøre i din aspx-fil, og der placere den hvor du har lyst.

Dette skulle gerne give dig en dekleration som nedenstående i din code-behind :

protected Panel Panel1; // eller hvad du nu har kaldt panelet i designeren.

Så kan du tilskrive den kontroller ved :
Panel1.Controls.Add(...);

Princippet er her det samme... de vil optræde i den rækkefølge de indsættes.

Var det ok ?

mvh
Avatar billede stefan_v Nybegynder
17. september 2004 - 11:32 #5
Endnu mere alternativt kan du (Hvis du er lidt ekstrem...) bruge absulut positionering...

TextBox1.Attributes.Add("style", "Z-INDEX: 123; LEFT: 352px; POSITION: absolute; TOP: 712px")

Jeg ville nu gøre som snepnet, men hvem ved...

Her kan du evt. opbygge Left og Top positionerne i din algoritme...

Igen... Jeg ville gøre som snepnet ;)

(+ Har ikke testet ovenstående, men det skulle virke...)
Avatar billede snepnet Nybegynder
02. oktober 2004 - 02:49 #6
hej bumle - er du på banen her ?
håber alt er vel.
mvh
(jeg smider et svar hvis du kunne bruge det jeg skrev til noget)
Avatar billede snepnet Nybegynder
09. oktober 2004 - 15:58 #7
bumle ?
Avatar billede snepnet Nybegynder
21. oktober 2004 - 16:32 #8
og hvad med her bumle - kan du også lukke den ?
mvh
Avatar billede stefan_v Nybegynder
14. september 2006 - 14:44 #9
luk luk luk?
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