0

ファイルアップロードコントロールを動的に追加するためのパネルが 1 つの行に含まれるテーブルを持つ 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);

問題は、パネル内に 2 つのコントロールしか表示されないことです。最大 5 つのコントロールを許可する必要がありますが、これらのコントロールはパネル内に表示されません。これらのコントロールをパネル内に表示するにはどうすればよいですか。パネルの CSS を設定する必要がありますか。パネルはタグ内にあります。

4

1 に答える 1

0

これは、ページのポストバック時に動的に追加されたコントロールがクリアされるためです。単純な解決策は、<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 に答える