动态添加控件不会显示在 Web 窗体 asp.net 面板中
本文关键字:asp 窗体 net Web 控件 添加 显示 动态 | 更新日期: 2023-09-27 18:33:41
>我有一个带有表格的 Web 表单,其中一行包含用于动态添加文件上传控件的面板
代码如下
<tr>
<td style="width:70%;display:block; overflow:visible;" >
<asp:Panel ID="ImagePanel" runat="server">
<uc1:AddNewImage runat="server" id="AddNewImage" /></asp:Panel>
<asp:Button ID="AddImage" OnClick="Unnamed_Click" Text="Add New Image" runat="server" CausesValidation="False" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" ErrorMessage="Please Enter Model Items" ForeColor="Red" ControlToValidate="TxtItems"></asp:RequiredFieldValidator>
</td>
</tr>
在按钮单击事件中,我使用以下代码将新的用户控件添加到 ImagePanel
Controls.AddNewImage Obj = (Controls.AddNewImage)LoadControl(@"~/Controls/AddNewImage.ascx");
this.ImagePanel.Controls.Add(Obj);
问题是面板内仅显示两个控件,我最多需要允许五个控件,但这些控件不会显示在面板内。我需要做什么才能在面板中显示这些控件。我是否需要为面板设置任何 css。面板位于标记内。
这是因为动态
添加的控件在页面回发时被清除。简单的解决方案是添加<asp:HiddenField id="hidCount" runat="server" value="1"/>
并更新您的点击事件,如下所示:
int count = int.Parse(hidCount.Value)++;
hidCount.Value = count.ToString();
for(i=0;i< count;i++) {
Controls.AddNewImage Obj = (Controls.AddNewImage)LoadControl(@"~/Controls/AddNewImage.ascx");
this.ImagePanel.Controls.Add(Obj);
}
这将完美地工作。