问题是这样的:

我在页面里有一个PlaceHolder容器,然后有一个Button;

    <form id="form1" runat="server">
    
<div>
    
<asp:PlaceHolder ID="ucHolder" runat="server"></asp:PlaceHolder>
    
</div>
    
<div>
        
<asp:Button ID="btnAddUC" runat="server" Text="Add User Control" />
    
</div>
    
</form>

当我点击Button的时候,PlaceHolder中动态加载一个UserControl,每点击一次按钮,多加载一个UserControl,如果已经加载的UserControl有值,需要保留原来的值。

好了,下面开始具体的实现

首先,我新建一个Aspx的页面和一个Ascx的用户控件,然后在Aspx页面的Page_Load事件中为Button添加Click事件;

 EventHandler(btnAddUC_Click);

还需要定义一个变量变量 Count,保存到 ViewState 中,记录 UserControl 的个数

 value;
        }
    }

按钮点击方法如下

;
        LoadUserControl(Count);
    }

加载用户控件的方法

.ucHolder.Controls.Add(ctl);
    }

这里注意,因为Asp.Net 的页面有一个Element Tree结构,会保存控件的状态的,所以加载的UserControl的ID要固定,就向上面 ctl.ID = string.Format("userControl_{0}", index); 每次加载控件的ID 都固定的

然后由于Asp.Net保存控件状态用的是ViewState,所以我们加载控件的实现需要在ViewState之后,我们放在页面的Page_Load事件中

)
        {
            LoadUserControl(i);
        }

OK,这样就完成了

 向容器(PlaceHolder)中动态添加多个用户控件(UserControl)

附:源代码

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-09
  • 2022-12-23
  • 2021-06-17
  • 2021-09-06
猜你喜欢
  • 2022-12-23
  • 2021-12-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-29
相关资源
相似解决方案