0

ボタンのクリックで更新パネルにラベルを追加したい..aspxファイルに次のコードがあります...

 <asp:UpdatePanel ID="up" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" >
                   <ContentTemplate >
                       <asp:Panel runat="server" ID="myPanel" >
                        <label id="ssd" runat="server" >abc</label>
                       </asp:Panel>
                       <asp:Button ID="Button1" runat="server" OnClick="Button1_Click"  Text="test"/>
                   </ContentTemplate>
               </asp:UpdatePanel>

そしてボタンクリックイベントで..

protected void Button1_Click(object sender, EventArgs e)
{
    Label l1 = new Label();
    l1.ID = "label1";
    l1.Text = "this is it...";
    up.ContentTemplateContainer.Controls.Add(l1);      
}

しかし、それは機能していません..:-(

4

1 に答える 1

1

UpdatePanelUpdateMode が に設定されているためConditional、分離コードから手動で更新する必要があります。

protected void Button1_Click(object sender, EventArgs e)
{
    Label l1 = new Label();
    l1.ID = "label1";
    l1.Text = "this is it...";
    up.ContentTemplateContainer.Controls.Add(l1); 

    up.Update();     
}

MSDNUpdatePanel.Updateメソッド

Update メソッドを使用する場合は、UpdateMode プロパティを Conditional に設定します。サーバー ロジックでパネルを更新する決定が必要な場合は、ChildrenAsTriggers プロパティが false であること、およびパネルに明示的なトリガーが定義されていないことを確認してください。

一般的なページ開発シナリオでは、トリガーを定義するか、UpdatePanel コントロールの ChildrenAsTriggers プロパティが true の場合、ページのライフ サイクル中に Update メソッドが自動的に呼び出されます。

ASP.NET Ajax を使用する場合でも、動的コントロールを再作成する必要があることに注意してください。page_loadそのため、遅くとも次のポストバックでラベルを手動で作成する必要があります。

于 2012-12-01T19:41:47.347 に答える