HighTechTalks DotNet Forums  

ITemplate and inbedded controls

ASP.net Building Controls microsoft.public.dotnet.framework.aspnet.buildingcontrols


Discuss ITemplate and inbedded controls in the ASP.net Building Controls forum.



Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old   
Perecli Manole
 
Posts: n/a

Default ITemplate and inbedded controls - 12-18-2006 , 06:00 PM






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



Reply With Quote
  #2  
Old   
Milosz Skalecki
 
Posts: n/a

Default RE: ITemplate and inbedded controls - 12-22-2006 , 06:22 AM






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:

Quote:
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




Reply With Quote
Reply




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.