![]() |
ITemplate and inbedded controls
I created a tabstrip custom control that is declared like this:
<acc:TabStrip ID="Tabs" runat="server" SelectedTabID="aa" AutoPostBack="true"> <Tab ID="aa" Text="aa"> <Template/> </Tab> <Tab ID="bb" Text="bb"/> <Template> <asp:Panel ID="test" ..... or any other control /> </Template> </Tab> </acc:TabStrip> I am using <ControlBuilder(GetType(TabStrip.ControlBuilder) ), ParseChildren(False)> attributes on the TabStrip Class and overrided AddParsedSubObject() to add the Tabs to a collection of type StateManagedCollection. Then somewhere in PreRender as I am iterating through the collection I am doing this "objTab.Template.InstantiateIn(objTableCell)" to place the contents of the template in a TableCell that is being rendered by the TabStrip control. Everything renderes and operates properly, however, as a control consumer, I have not found a way to access any of the controls contained in the template. In the example above I can not access the control with ID="test" in the code behind so if I wanted to change any properties of these controls, on post back, I could not. How should I change my implementation to allow my consumers to access the controls contained in the <Template> tags. Perry |
RE: ITemplate and inbedded controls
Hi Perceli,
I suspect you're trying to access controls that have not been created - this is because you instantiate template on prerender, whilst it should be done earlier (CreateChildControls + EnsureChildControls are designed for this), of course to find the control in the template, you must call FindControl of the control template is instantiated in, (CType(objTableCell.FindControl("test"), Panel) in this case) hope this helps -- Milosz Skalecki MCAD "Perecli Manole" wrote: > I created a tabstrip custom control that is declared like this: > > <acc:TabStrip ID="Tabs" runat="server" SelectedTabID="aa" > AutoPostBack="true"> > <Tab ID="aa" Text="aa"> > <Template/> > </Tab> > <Tab ID="bb" Text="bb"/> > <Template> > <asp:Panel ID="test" ..... or any other control /> > </Template> > </Tab> > </acc:TabStrip> > > I am using <ControlBuilder(GetType(TabStrip.ControlBuilder) ), > ParseChildren(False)> attributes on the TabStrip Class and overrided > AddParsedSubObject() to add the Tabs to a collection of type > StateManagedCollection. Then somewhere in PreRender as I am iterating > through the collection I am doing this > "objTab.Template.InstantiateIn(objTableCell)" to place the contents of the > template in a TableCell that is being rendered by the TabStrip control. > Everything renderes and operates properly, however, as a control consumer, I > have not found a way to access any of the controls contained in the > template. In the example above I can not access the control with ID="test" > in the code behind so if I wanted to change any properties of these > controls, on post back, I could not. How should I change my implementation > to allow my consumers to access the controls contained in the <Template> > tags. > > Perry > > > |
| All times are GMT. The time now is 09:18 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.