How do you 'clone' WebControls in C# .NET ?
- by Adz
My basic question is, in .NET, how do I clone WebControls?
I would like to build a custom tag, which can produce multiple copies of its children.
Ultimately I intend to build a tag similar to in JSP/Struts.
But the first hurdle I have is the ability to duplicate/clone the contents of a control.
Consider this rather contrived example;
<custom:duplicate count="2">
<div>
<p>Some html</p>
<asp:TextBox id="tb1" runat="server" />
</div>
</custom:duplicate>
The HTML markup which is output would be something like,
<div>
<p>Some html</p>
<input type="text" id="tb1" />
</div>
<div>
<p>Some html</p>
<input type="text" id="tb1" />
</div>
Note: I know i have the id duplicated, I can come up with a solution to that later!
So what we would have is my custom control with 3 children (I think) - a literal control, a TextBox control, and another literal control.
In this example I have said 'count=2' so what the control should do is output/render its children twice.
What I would hope to do is write some "OnInit" code which does something like:
List<WebControl> clones;
for(int i=1; i<count; i++)
{
foreach(WebControl c in Controls)
{
WebControl clone = c.Clone();
clones.Add(clone);
}
}
Controls.AddRange(clones);
However, as far as I can tell, WebControls do not implement ICloneable, so its not possible to clone them in this way.
Any ideas how I can clone WebControls?