Composite control delegating databound templated features to child <asp:repeater> control

Composite control delegating databound templated features to child <asp:repeater> control

Post by debarts » Sat, 10 Apr 2004 05:38:19


Hi Everybody,

I'm creating a composite control in C# that basically renders a bunch of
webcontrols such as <asp:Label />, <asp:Repeater />, etc... as its children.

My goal is to re-use the functionality of the <asp:Repeater /> control to
allow the page developer to take advantage of the Data-bound, Templated
features the <asp:Repeater /> offers. (I'd like to avoid building that
functionality from scratch in my control).

The question is:

When the page developer using VS.NET drags my control onto an .aspx page,
I'd like the developer to be able to add his/her own template code
<ItemTemplate>, etc... and have the processing of the inline template code
and data-binding expressions delegate down to my child <asp:Repeater> for
rendering.

e.g.

<my:CompositeCtrl id="Cntrl1" runat="server">

//... The <asp:Repeater> child in my control would handle this block
...
<HeaderTemplate>Title</HeaderTemplate>
<ItemTemplate>
<li><a href="<%# DataBinder.Eval(Container.DataItem,
"URL") %>">
<%# DataBinder.Eval(Container.DataItem, "Name")
%></a></li>
</ItemTemplate>
<FooterTemplate>Footer Text</FooterTemplate>
etc...

</my:CompositeCtrl>


Is this possible?

Thanks for any help!
Sam
 
 
 

Composite control delegating databound templated features to child <asp:repeater> control

Post by John Saund » Sat, 10 Apr 2004 08:23:58


children.
block

You could delegate the template properties by creating corresponding
properties in your own code:

public ITemplate ItemTemplate
{
get {EnsureChildControls(); return myChildRepeater.ItemTemplate;}
set {EnsureChildControls(); myChildRepeater.ItemTemplate = value;}
}

However, this won't give you any of the designer features of the Repeater
control.
--
John Saunders
John.Saunders at SurfControl.com