dynamically loading usercontrol

G

Guest

Hello all,

I have a UserControl that renders some HTML content. I now need to
dynamically load and render "n" instances of this usercontrol on a host aspx
page inside a panel control based upon user input of "n". Any ideas how I
can do this?

TIA!
 
E

Eliyahu Goldin

You need to use a databound control, perhaps a repeater, that will be bound
to a datasource, perhaps an array, containing all instances of the user
control.

Have some code that will creat an array myControls[] based on the user
input. Then do
myRepeater.DataSource = myControls;
myRepeater.DataBind();



--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net
 
M

Milosz Skalecki [MCAD]

Howdy,

Use Repeater or DataList:

-- aspx code --
<asp:Repeater runat="server" ID="dynamicControls">
<ItemTemplate>
<uc1:myUserControl runat="server" ID="myUserControl"/>
</ItemTemplate>
</asp:Repeater>
-- c# code beside --
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int rowCount = 10;
myRepeater.DataSource = new int[rowCount];
myRepeater.DataBind();
}
}

Hope it helps
 
G

Guest

OK,

Thanks for the tip. Now, what if I need to set custom properties on my
usercontrol. Is that possible?

TIA!

Milosz Skalecki said:
Howdy,

Use Repeater or DataList:

-- aspx code --
<asp:Repeater runat="server" ID="dynamicControls">
<ItemTemplate>
<uc1:myUserControl runat="server" ID="myUserControl"/>
</ItemTemplate>
</asp:Repeater>
-- c# code beside --
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int rowCount = 10;
myRepeater.DataSource = new int[rowCount];
myRepeater.DataBind();
}
}

Hope it helps
--
Milosz


Hello all,

I have a UserControl that renders some HTML content. I now need to
dynamically load and render "n" instances of this usercontrol on a host
aspx
page inside a panel control based upon user input of "n". Any ideas how I
can do this?

TIA!
 
M

Milosz Skalecki [MCAD]

Howdy,

Yes it is, two ways:
1. through data binding:

<asp:Repeater runat="server" ID="dynamicControls">
<ItemTemplate>
<uc1:MyUserControl runat="server" ID="userControl" CustomDateProperty='<%#
DateTime.Now %>'/>
</ItemTemplate>
</asp:Repeater>

2. or in the code behind:
<asp:Repeater runat="server" ID="dynamicControls"
OnItemDataBound="dynamicControls_ItemDataBound">
<ItemTemplate>
<uc1:MyUserControl runat="server" ID="userControl" />
</ItemTemplate>
</asp:Repeater>
-- c# code behind --

protected void dynamicControls_ItemDataBound(object sender,
RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;

if (item.ItemType == ListItemType.Item ||
item.ItemType == ListItemType.AlternatingItem)
{
MyUserControl ctrl = (MyUserControlClassName)
item.FindControl("userControl");

ctrl.CustomDateProperty = DateTime.Now;
}

}

HTH
--
Milosz


OK,

Thanks for the tip. Now, what if I need to set custom properties on my
usercontrol. Is that possible?

TIA!

Milosz Skalecki said:
Howdy,

Use Repeater or DataList:

-- aspx code --
<asp:Repeater runat="server" ID="dynamicControls">
<ItemTemplate>
<uc1:myUserControl runat="server" ID="myUserControl"/>
</ItemTemplate>
</asp:Repeater>
-- c# code beside --
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int rowCount = 10;
myRepeater.DataSource = new int[rowCount];
myRepeater.DataBind();
}
}

Hope it helps
--
Milosz


Hello all,

I have a UserControl that renders some HTML content. I now need to
dynamically load and render "n" instances of this usercontrol on a host
aspx
page inside a panel control based upon user input of "n". Any ideas how I
can do this?

TIA!
 
G

Guest

Thank you.

Milosz Skalecki said:
Howdy,

Yes it is, two ways:
1. through data binding:

<asp:Repeater runat="server" ID="dynamicControls">
<ItemTemplate>
<uc1:MyUserControl runat="server" ID="userControl" CustomDateProperty='<%#
DateTime.Now %>'/>
</ItemTemplate>
</asp:Repeater>

2. or in the code behind:
<asp:Repeater runat="server" ID="dynamicControls"
OnItemDataBound="dynamicControls_ItemDataBound">
<ItemTemplate>
<uc1:MyUserControl runat="server" ID="userControl" />
</ItemTemplate>
</asp:Repeater>
-- c# code behind --

protected void dynamicControls_ItemDataBound(object sender,
RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;

if (item.ItemType == ListItemType.Item ||
item.ItemType == ListItemType.AlternatingItem)
{
MyUserControl ctrl = (MyUserControlClassName)
item.FindControl("userControl");

ctrl.CustomDateProperty = DateTime.Now;
}

}

HTH
--
Milosz


OK,

Thanks for the tip. Now, what if I need to set custom properties on my
usercontrol. Is that possible?

TIA!

Milosz Skalecki said:
Howdy,

Use Repeater or DataList:

-- aspx code --
<asp:Repeater runat="server" ID="dynamicControls">
<ItemTemplate>
<uc1:myUserControl runat="server" ID="myUserControl"/>
</ItemTemplate>
</asp:Repeater>
-- c# code beside --
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int rowCount = 10;
myRepeater.DataSource = new int[rowCount];
myRepeater.DataBind();
}
}

Hope it helps
--
Milosz


:

Hello all,

I have a UserControl that renders some HTML content. I now need to
dynamically load and render "n" instances of this usercontrol on a
host
aspx
page inside a panel control based upon user input of "n". Any ideas
how I
can do this?

TIA!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,066
Latest member
VytoKetoReviews

Latest Threads

Top