문제

마크 업에 두 개의 텍스트 상자가있는 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) );
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top