ParseChildren(false) not adding sub objects in the designer

Discussion in 'ASP .Net' started by Sam Fields, Jan 28, 2004.

  1. Sam Fields

    Sam Fields Guest

    I have been wrestling with this code for about 2 weeks now. My goal is to
    create a table for formatting purposes. I want to standardize it as a
    webcontrol. I want all of the content to persist as top-level controls so
    that they are visible to the asp.net designer -- PersistChildren(true). The
    code works fine for run-time, but will not call AddParsedSubObject for
    design-time. If the content is literal only, it will add the parsed sub
    object "LiteralContent", but if I add any other controls it does not
    display.

    How do I get my child controls to display properly in the asp.net designer?

    Thanks to any who can help!
    Sam Fields


    Here is a sample of what I am trying to build in its simplest format:

    c# code:
    namespace testbed
    {
    [ParseChildren(false), PersistChildren(true)]
    [ToolboxData("<{0}:test runat=server></{0}:test>")]
    public class test : Table
    {
    private TableCell innercell = new TableCell();
    public test()
    {
    this.Rows.Add(new TableRow());
    this.Rows[0].Cells.Add(new TableCell());
    this.Rows[0].Cells[0].Text = "Header";

    this.Rows.Add(new TableRow());
    this.Rows[1].Cells.Add(innercell);

    this.Rows.Add(new TableRow());
    this.Rows[2].Cells.Add(new TableCell());
    this.Rows[2].Cells[0].Text = "Footer";
    }

    protected override void AddParsedSubObject(object obj)
    {
    innercell.Controls.Add((Control) obj);
    this.ChildControlsCreated = false;
    }
    }
    }

    ..aspx page:
    <%@ Register TagPrefix="cc" Namespace="testbed" Assembly="testbed" %>
    <%@ Page language="c#" Codebehind="default.aspx.cs"
    AutoEventWireup="false"
    Inherits="testbed._default" %>
    <HTML>
    <HEAD>
    <title>default</title>
    </HEAD>
    <body>
    <form id="default" method="post" runat="server">
    <cc:test id="content" runat="server">
    MyContent
    <asp:Label id="mylabel" text="MyLabel" Runat="server"></asp:Label>
    </cc:test>
    </form>
    </body>
    </HTML>
    Sam Fields, Jan 28, 2004
    #1
    1. Advertising

  2. Sam Fields

    RadekP Guest

    Sam..

    I'm afraid you are never going to achieve design time rendering of children
    controls persisted with [ParseChildren(false)] [PersistChildren(true)].
    First of - AddParsedSubObject method runs only at run-time. ControlBuilder's
    are the ones executed at parse time - they generate a tree similar to
    control tree but containing instances of ControlBuilders. Nevertheless I
    would recommend to implement ITemplate interface and
    TemplatedControlDesigner for control.

    Regards

    Radek

    "Sam Fields" <> wrote in message
    news:...
    > I have been wrestling with this code for about 2 weeks now. My goal is to
    > create a table for formatting purposes. I want to standardize it as a
    > webcontrol. I want all of the content to persist as top-level controls so
    > that they are visible to the asp.net designer -- PersistChildren(true).

    The
    > code works fine for run-time, but will not call AddParsedSubObject for
    > design-time. If the content is literal only, it will add the parsed sub
    > object "LiteralContent", but if I add any other controls it does not
    > display.
    >
    > How do I get my child controls to display properly in the asp.net

    designer?
    >
    > Thanks to any who can help!
    > Sam Fields
    >
    >
    > Here is a sample of what I am trying to build in its simplest format:
    >
    > c# code:
    > namespace testbed
    > {
    > [ParseChildren(false), PersistChildren(true)]
    > [ToolboxData("<{0}:test runat=server></{0}:test>")]
    > public class test : Table
    > {
    > private TableCell innercell = new TableCell();
    > public test()
    > {
    > this.Rows.Add(new TableRow());
    > this.Rows[0].Cells.Add(new TableCell());
    > this.Rows[0].Cells[0].Text = "Header";
    >
    > this.Rows.Add(new TableRow());
    > this.Rows[1].Cells.Add(innercell);
    >
    > this.Rows.Add(new TableRow());
    > this.Rows[2].Cells.Add(new TableCell());
    > this.Rows[2].Cells[0].Text = "Footer";
    > }
    >
    > protected override void AddParsedSubObject(object obj)
    > {
    > innercell.Controls.Add((Control) obj);
    > this.ChildControlsCreated = false;
    > }
    > }
    > }
    >
    > .aspx page:
    > <%@ Register TagPrefix="cc" Namespace="testbed" Assembly="testbed" %>
    > <%@ Page language="c#" Codebehind="default.aspx.cs"
    > AutoEventWireup="false"
    > Inherits="testbed._default" %>
    > <HTML>
    > <HEAD>
    > <title>default</title>
    > </HEAD>
    > <body>
    > <form id="default" method="post" runat="server">
    > <cc:test id="content" runat="server">
    > MyContent
    > <asp:Label id="mylabel" text="MyLabel" Runat="server"></asp:Label>
    > </cc:test>
    > </form>
    > </body>
    > </HTML>
    >
    >
    >
    >
    >
    RadekP, Jan 28, 2004
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Ben
    Replies:
    2
    Views:
    877
  2. Lawrence D'Oliveiro

    Death To Sub-Sub-Sub-Directories!

    Lawrence D'Oliveiro, May 5, 2011, in forum: Java
    Replies:
    92
    Views:
    2,015
    Lawrence D'Oliveiro
    May 20, 2011
  3. Sam Fields

    ParseChildren(false) not adding sub objects in the designer

    Sam Fields, Jan 28, 2004, in forum: ASP .Net Building Controls
    Replies:
    3
    Views:
    195
    Sam Fields
    Jan 29, 2004
  4. Guest

    RenderChildren/ParseChildren

    Guest, Mar 1, 2005, in forum: ASP .Net Building Controls
    Replies:
    6
    Views:
    232
    Steven Cheng[MSFT]
    Mar 16, 2005
  5. Karen in England

    Nested controls in User Control via ParseChildren(false) not worki

    Karen in England, Sep 21, 2005, in forum: ASP .Net Building Controls
    Replies:
    4
    Views:
    736
Loading...

Share This Page