لا تظهر عناصر التحكم في عنصر تحكم المستخدم الذي تم إنشاؤه ديناميكيًا

StackOverflow https://stackoverflow.com/questions/127413

سؤال

لدي عنصر تحكم المستخدم المسمى 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 فارغ وControls.Count هو 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