동적으로 생성 된 사용자 컨트롤에는 컨트롤이 나타나지 않습니다
-
02-07-2019 - |
문제
마크 업에 두 개의 텍스트 상자가있는 DateTimeuc라는 사용자 컨트롤이 있습니다.
<asp:TextBox ID="dateTextBox" runat="server"></asp:TextBox>
<asp:TextBox ID="timeTextBox" runat="server"></asp:TextBox>
다른 사용자 컨트롤 에서이 컨트롤을 동적으로 만들고 있습니다.
Controls.Add(GenerateDateTime(parameter));
private DateTimeUC GenerateDateTime(SomeParameter parameter)
{
DateTimeUC uc = new DateTimeUC();
uc.ID = parameter.Name;
return uc;
}
그러나 페이지를 렌더링하면 DateTimeuc는 아무것도 렌더링하지 않습니다. 나는 다음과 같이 확인했다 :
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는 비어 있고 컨트롤은 0입니다.
해결책
당신은 사용해야합니다 LoadControl( "your_user_control_app_relative_path.ascx" )
"dateTimeuc uc = new dateTimeuc ();"대신 메소드
다른 팁
나는이 문제에 대해 잠시 뒤를이었다. loadControl () 메소드를 사용해야합니다. 체크 아웃 이 페이지 그 위에.
나는 당신이 당신의 컨트롤을 양식 자체가 아닌 페이지의 형식에 추가하고 싶다고 생각합니다.
코드 :
Controls.Add( GenerateDateTime(parameter) );
노력하다:
Page.Form.Controls.Add( GenerateDateTime(parameter) );
제휴하지 않습니다 StackOverflow