Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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# 如何删除.net中动态添加的控件?_C#_Asp.net_User Controls - Fatal编程技术网

C# 如何删除.net中动态添加的控件?

C# 如何删除.net中动态添加的控件?,c#,asp.net,user-controls,C#,Asp.net,User Controls,我想删除动态添加的用户控件 我试过了,但没有取下 代码: .ascx .aspx 编辑: 这里我添加了用户控件 public List<string> NoOfControls { get { return ViewState["NoOfControls"] == null ? new List<string>() : (List<string>)ViewState["NoOfControls

我想删除动态添加的用户控件

我试过了,但没有取下

代码:

.ascx

.aspx

编辑:

这里我添加了用户控件

  public List<string> NoOfControls
    {
        get
        {
            return ViewState["NoOfControls"] == null ? new List<string>() : (List<string>)ViewState["NoOfControls"];

        }
        set
        {
            ViewState["NoOfControls"] = value;
        }
    }


    protected override void LoadViewState(object savedState)
    {
        base.LoadViewState(savedState);

        GenerateControls();
    }


    private void GenerateControls()
    {
        foreach (string i in NoOfControls)
        {
            VisaUserControl ctrl = (VisaUserControl)Page.LoadControl("VisaUserControl.ascx");

            ctrl.ID = i;
            this.rpt1.Controls.Add(ctrl);
        }
    }

    protected void btnAddVisa_Click(object sender, EventArgs e)
    {

        List<string> temp = null;
        var uc = (VisaUserControl)this.LoadControl(@"VisaUserControl.ascx");

        string id = Guid.NewGuid().ToString();
        uc.ID = id;

        temp = NoOfControls;
        temp.Add(id);
        NoOfControls = temp;
        rpt1.Controls.Add(uc);
    }
公共列表NoOfControls
{
得到
{
返回ViewState[“NoOfControls”]==null?新建列表():(列表)ViewState[“NoOfControls”];
}
设置
{
ViewState[“NoOfControls”]=值;
}
}
受保护的覆盖无效LoadViewState(对象保存状态)
{
base.LoadViewState(savedState);
生成控件();
}
私有void GenerateControls()
{
foreach(NoOfControls中的字符串i)
{
VisaUserControl ctrl=(VisaUserControl)Page.LoadControl(“VisaUserControl.ascx”);
ctrl.ID=i;
this.rpt1.Controls.Add(ctrl);
}
}
受保护的无效btnAddVisa_单击(对象发送方,事件参数e)
{
列表温度=空;
var uc=(VisaUserControl)this.LoadControl(@“VisaUserControl.ascx”);
字符串id=Guid.NewGuid().ToString();
uc.ID=ID;
温度=无控制;
临时添加(id);
NoOfControls=温度;
rpt1.控件.添加(uc);
}
在下图中,如果单击“删除”按钮,我想删除该行


“但我不明白”不是问题。我看不到动态添加控件的任何代码,只有ASPX中静态定义的控件。代码的最后一部分,您使用
LoadControl(@“VisaUserControl.ascx”)
创建了一个全新的控件,然后尝试将其从一个肯定不是其成员的集合中删除。请参阅我编辑的问题,我无法实现此功能,但您可能能够做到:这并不是我所需要的。
public event EventHandler UserControlButtonClicked;

public void OnUserControlButtonClick()
{
  if (UserControlButtonClicked != null)
  {
     UserControlButtonClicked(this, EventArgs.Empty);
  }
}

protected void removebtn_Click(object sender, EventArgs e)
{
    OnUserControlButtonClick();
}
 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="New_Employee.aspx.cs" Inherits="Portal.New_Employee" %>
 <%@ Register Src="~/VisaUserControl.ascx" TagName="VisaUserControl" TagPrefix="uc" %>

 <div id="div1" runat="server">   
 <uc:VisaUserControl ID="VisaUserControl1" Visible="false" runat="server" />
 <asp:Repeater ID="rpt1" runat="server">
 <ItemTemplate> 
 </ItemTemplate>
 </asp:Repeater>              
 <asp:Button ID="btnAddVisa" runat="server" Text="Add More Visa" onclick="btnAddVisa_Click" width="76px" />
 </div>  
protected void Page_Load(object sender, EventArgs e)
{
    VisaUserControl1.UserControlButtonClicked += new
             EventHandler(AddVisaControl_UserControlButtonClicked);
}

private void AddVisaControl_UserControlButtonClicked(object sender, EventArgs e)
{
    var ctrl = (VisaUserControl)LoadControl(@"VisaUserControl.ascx");
    this.rpt1.Controls.Remove(ctrl);
}
  public List<string> NoOfControls
    {
        get
        {
            return ViewState["NoOfControls"] == null ? new List<string>() : (List<string>)ViewState["NoOfControls"];

        }
        set
        {
            ViewState["NoOfControls"] = value;
        }
    }


    protected override void LoadViewState(object savedState)
    {
        base.LoadViewState(savedState);

        GenerateControls();
    }


    private void GenerateControls()
    {
        foreach (string i in NoOfControls)
        {
            VisaUserControl ctrl = (VisaUserControl)Page.LoadControl("VisaUserControl.ascx");

            ctrl.ID = i;
            this.rpt1.Controls.Add(ctrl);
        }
    }

    protected void btnAddVisa_Click(object sender, EventArgs e)
    {

        List<string> temp = null;
        var uc = (VisaUserControl)this.LoadControl(@"VisaUserControl.ascx");

        string id = Guid.NewGuid().ToString();
        uc.ID = id;

        temp = NoOfControls;
        temp.Add(id);
        NoOfControls = temp;
        rpt1.Controls.Add(uc);
    }