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
[quoted text, click to view] "Sam Fields" <sfields@state.pa.us> wrote in message
news:Om5N9Fd5DHA.2432@TK2MSFTNGP10.phx.gbl...
> More information:
> If the inner content is literal, the AddParsedSubObject override is adding
> the "LiteralControl" at design time. It is only when the <asp:Label> is
> added to the inner content that the design time rendering fails.
>
> Any help would be greatly appreciated!
> Thanks, Sam Fields
>
> "Sam Fields" <sfields@state.pa.us> wrote in message
> news:e7dQ%23Oc5DHA.2496@TK2MSFTNGP09.phx.gbl...
> > 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. 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>
> >
> >
>
>