Avatar billede netro Nybegynder
26. maj 2007 - 19:32 Der er 17 kommentarer og
1 løsning

Custom server control

Jeg sidder og prøver at bikse en TabBar-control sammen, men det går ikke så godt, da jeg i min TabBar-control ikke kan få fat på mine Tab-objekter og deres indhold. Hvert Tab-objekt nedarver fra panel-klassen.

        <cc1:TabBar ID="TabBar1" runat="server">
            <cc1:Tab ID="Tab1" runat="server">
                Indhold 1
            </cc1:Tab>
            <cc1:Tab ID="Tab2" runat="server">
                Indhold 2
            </cc1:Tab>
        </cc1:TabBar>
Avatar billede dr_chaos Nybegynder
26. maj 2007 - 21:08 #1
Hvordan ser din kode ud ?
Avatar billede dr_chaos Nybegynder
26. maj 2007 - 21:08 #2
altså selve koden til din custom controller.
Avatar billede netro Nybegynder
26. maj 2007 - 21:30 #3
Der er ikke meget. For jeg gik lidt i stå, inden jeg startede, fordi jeg ikke ved, hvordan inner content håndteres. I mit eksempel forventede jeg, at to div'er blev udskrevet, men der er ingenting.

    [ToolboxData("<{0}:TabBar runat=server></{0}:TabBar>")]
    [PersistChildren(true)]
    public class TabBar : WebControl
    {
        protected override void Render(HtmlTextWriter output)
        {
        }
    }
Avatar billede netro Nybegynder
26. maj 2007 - 21:31 #4
Og så min tab, der nedarver fra panel.

    [ToolboxData("<{0}:Tab runat=server></{0}:Tab>")]
    [PersistChildren(true)]
    [ParseChildren(false)]
    public class Tab : Panel
    {
        protected override void Render(HtmlTextWriter output)
        {
        }
    }
Avatar billede netro Nybegynder
26. maj 2007 - 22:17 #6
Jeg har set den side, og eksemplet virker fint, men det er literal text...
Avatar billede dr_chaos Nybegynder
26. maj 2007 - 22:41 #7
prøv med:


    [ToolboxData("<{0}:TabBar runat=server></{0}:TabBar>")]
    [PersistChildren(true)]
    public class TabBar : WebControl
    {
        protected override void Render(HtmlTextWriter output)
        {
            foreach(Control c in Controls)
{
if(c is Tab )
{
output.Write ("jeg fandt dig tabcontrol");
}
}
        }
    }
Avatar billede netro Nybegynder
26. maj 2007 - 22:56 #8
Ja, nu kan jeg fange dem. Fint, men hvordan får jeg så skrevet indholdet ud? Altså så jeg får et output i stil med:

<div id="Tab1">Indhold 1</div>
<div id="Tab2">Indhold 2</div>
Avatar billede dr_chaos Nybegynder
26. maj 2007 - 23:08 #9
noget med:

if(c is Tab )
{
Tab t = c as Tab;
t.RenderControl(output);
}
Avatar billede netro Nybegynder
26. maj 2007 - 23:19 #10
Jeg synes ikke, det giver noget output..
Avatar billede netro Nybegynder
26. maj 2007 - 23:45 #11
Jge kan få indholdet af panelerne ud ved at skrive følg. i Tab-klassen:

foreach (Control c in Controls)
  c.RenderControl(output);

Men jeg skulle også gerne have hver af disse kontroller ind i panelet.
Avatar billede netro Nybegynder
26. maj 2007 - 23:46 #12
Rettere sagt - jeg skulle også gerne have udskrevet panelet, der omkranser indholdet.
Avatar billede dr_chaos Nybegynder
27. maj 2007 - 00:05 #13
enten:
[ToolboxData("<{0}:Tab runat=server></{0}:Tab>")]
    [PersistChildren(true)]
    [ParseChildren(false)]
    public class Tab : Panel
    {
        protected override void Render(HtmlTextWriter output)
        {
foreach (Control c in Controls)
  c.RenderControl(output);

        }
    }
Avatar billede dr_chaos Nybegynder
27. maj 2007 - 00:05 #14
Eller
enten:
[ToolboxData("<{0}:Tab runat=server></{0}:Tab>")]
    [PersistChildren(true)]
    [ParseChildren(false)]
    public class Tab : Panel
    {
       
    }
Avatar billede netro Nybegynder
27. maj 2007 - 00:32 #15
Den udskriver kun eet panel? Kan jeg ikke lade Tab nedarve fra Control i stedet for Panel og så selv sørge for panelet?

protected override void Render(HtmlTextWriter output)
{
  Panel p = new Panel();
  foreach (Control c in Controls)
      p.controls.add(c);
  p.RenderControl(output);
}

Dette giver mig en fejl, fordi control-collectionen er ændret.
Avatar billede dr_chaos Nybegynder
27. maj 2007 - 08:26 #16
Prøv at google den præcise fejlmeddelelse.
Avatar billede netro Nybegynder
17. august 2007 - 12:03 #17
Yes, læg bare et svar.
Avatar billede dr_chaos Nybegynder
18. august 2007 - 19:51 #18
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
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