سؤال

ولدي لوحة منتظم UpdatePanel وفي ذلك. في لوحة I حيوي إضافة UserControls بسيطة. في UserControl لديه زر وتسمية. عند النقر على زر في جهاز التحكم يزيل كافة عناصر التحكم في لوحة والتي اضفت بشكل حيوي. يمكن لأي شخص أن تساعد؟

    int controlID = 0;
    List<Control> cc = new List<Control>();
    if (Session["ControlsCompleted"] != null)
    {
        cc = Session["ControlsCompleted"] as List<Control>;
        for (int i = 0; i < cc.Count; i++)
        {
            pnlCompletedEducation.Controls.Add(cc[i]);
        }
        controlID = cc.Count;
    }
    Controls_TestWebUserControl ct = LoadControl(@"Controls\TestWebUserControl.ascx") as Controls_TestWebUserControl;
    ct.ID = controlID.ToString();
    cc.Add(ct);
    ct.EnableViewState = true;
    pnlCompletedEducation.Controls.Add(ct);
    txtInstitutionName.Text = controlID.ToString();
    List<Control> lc = new List<Control>();
    for (int i = 0; i < pnlCompletedEducation.Controls.Count; i++)
    {
        lc.Add(pnlCompletedEducation.Controls[i]);
    }
    Session["ControlsCompleted"] = lc;

وهذه هي الطريقة التي يمكنني إضافة عناصر التحكم إلى لوحة. كان لي لإبقائها في مكان ما، وأنا لا يمكن أن تفعل ذلك مع حالة العرض، لذلك أنا استخدمت الدورة، الذي هو فكرة سيئة.

هل كانت مفيدة؟

المحلول

ويقول لك ان تقوم بإضافة عنصر تحكم المستخدم بشكل حيوي. هل تواجه كود مثل هذا:

void Page_Load(...)    
{
     if (!IsPostback)
        // AddUserControl here.
}

وتحتاج إلى إضافة عنصر تحكم المستخدم أثناء كل طلب، أيضا إعادات النشر، لأنها لن تكون مخزنة في حالة العرض التي قمت بتعديل شجرة السيطرة.

نصائح أخرى

وأنت المشكلة التي لم صوغه (على سبيل المثال في Page_Load) بإضافة التحكم بشكل حيوي. تأكد من أن يتم إعادة السيطرة على IsPostBack

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top