I have user control named DateTimeUC which has two textboxes on its markup:
<asp:TextBox ID="dateTextBox" runat="server"></asp:TextBox>
<asp:TextBox ID="timeTextBox" runat="server"></asp:TextBox>
I am dynamically creating this control in another user control:
Controls.Add(GenerateDateTime(parameter));
private DateTimeUC GenerateDateTime(SomeParameter parameter)
{
DateTimeUC uc = new DateTimeUC();
uc.ID = parameter.Name;
return uc;
}
But when I render the page, DateTimeUC renders nothing. I checked it like this:
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
StringBuilder builder = new StringBuilder();
StringWriter swriter = new StringWriter(builder);
HtmlTextWriter hwriter = new HtmlTextWriter(swriter);
base.Render(hwriter);
string s = builder.ToString();
}
s is empty and Controls.Count is 0. What am I doing wrong?
-
You must use the
LoadControl( "your_user_control_app_relative_path.ascx" )
method instead of "DateTimeUC uc = new DateTimeUC();"McMuttons : Been looking for an answer to this all day. Thanks!From TcKs -
I ran into this problem myself a while back. You need to use the LoadControl() method. Check out this page on it.
From ajh1138 -
I think you want to add your control to the page's form & not the form itself.
your code:
Controls.Add( GenerateDateTime(parameter) );
try:
Page.Form.Controls.Add( GenerateDateTime(parameter) );
From Briggie Smalls
0 comments:
Post a Comment