0

我有一个带有表格的 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。面板位于标签内。

4

1 回答 1

0

这是因为动态添加的控件在页面 PostBack 时被清除。简单的解决方案是像这样添加<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);
}

这将完美地工作。

于 2013-10-02T17:30:18.200 回答