Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net Building Controls (http://www.velocityreviews.com/forums/f59-asp-net-building-controls.html)
-   -   ITemplate and inbedded controls (http://www.velocityreviews.com/forums/t758676-itemplate-and-inbedded-controls.html)

Perecli Manole 12-18-2006 11:00 PM

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



Milosz Skalecki 12-22-2006 11:22 AM

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 03:28 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.