Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 事件问题C.NET用户控件_C#_.net_Events_Updatepanel_User Controls - Fatal编程技术网

C# 事件问题C.NET用户控件

C# 事件问题C.NET用户控件,c#,.net,events,updatepanel,user-controls,C#,.net,Events,Updatepanel,User Controls,我有一个UpdatePanel,里面有一个常规面板。在面板中,我动态添加了简单的UserControls。Usercontrol有一个按钮和一个标签。当我单击控件中的按钮时,它会删除面板中我动态添加的所有控件。 有人能帮忙吗 int controlID = 0; List<Control> cc = new List<Control>(); if (Session["ControlsCompleted"] != null) {

我有一个UpdatePanel,里面有一个常规面板。在面板中,我动态添加了简单的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;

这就是我将控件添加到面板的方式。我必须把它们放在某个地方,但我无法使用ViewState,所以我使用了一个会话,这是一个坏主意。

您遇到了一个您没有重新创建的问题,例如在Page\u Load动态添加控件。
确保在IsPostBack上重新创建控件

如果您说要动态添加用户控件。您是否有这样的代码:

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

您需要在每次请求期间添加用户控件,也需要回发,因为它不会存储在您已修改控件树的视图状态中。

您应该为添加控件的位置和按钮单击事件的事件处理程序发布代码。