5

如果UpdatePanel在另一个内部UpdatePanel,并且在内部 UpdatePanel 中有一个按钮,我希望在单击此按钮时,只刷新内部UpdatePanel. 如何 ?

4

4 回答 4

6

在innerupdate 面板中,将updatemode 设置为有条件的,并将outerupdatepanel childrenastriggers 属性设置为false。在内部更新面板中添加一个回发触发器并将其设置为将导致回发的按钮。像这样的东西

  <asp:UpdatePanel ID="parentup" runat="server" ChildrenAsTriggers="false">
    <ContentTemplate>
        <asp:UpdatePanel ID="chidlup" UpdateMode="Conditional" runat="server">
            <ContentTemplate>
                <asp:Button ID="btn" runat="server" />
            </ContentTemplate>
            <Triggers>
                <asp:PostBackTrigger ControlID="btn" />
            </Triggers>
        </asp:UpdatePanel>
    </ContentTemplate>
</asp:UpdatePanel>
于 2012-08-07T10:27:59.523 回答
5

@Waqar Janjua是对的。

但是您不必将 ChildrenAsTriggers 设置为 false,有时将其设置为 true 会更方便。

在两个更新面板中设置属性UpdateMode="Conditional"(将 ChildrenAsTriggers 保留为其默认值 true)。然后在:将触发器添加到您的按钮之间,正如 Janjua 所说:

<Triggers>
    <asp:AsyncPostBackTrigger ControlID="btn" />
</Triggers>

当 UpdateMode 不是有条件的时,每个更新面板都会更新它。

于 2012-08-13T20:57:07.577 回答
0

这段代码可以帮助你:这里是Source

 <asp:ScriptManager ID="script1" runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="up1" runat="server">
            <ContentTemplate>
                <asp:Label ID="lblTime" runat="server" ForeColor="Red"></asp:Label>
                <asp:Button ID="buttonOuter" runat="server" OnClick="buttonOuter_Click" Text="What is the time?" />
                <asp:UpdatePanel ID="up2" runat="server" UpdateMode="Conditional">
                    <ContentTemplate>
                        <asp:Label ID="lblTime2" runat="server" ForeColor="Blue"></asp:Label>
                        <asp:Button ID="buttonInner" runat="server" OnClick="buttonInner_Click" Text="What is the time?" />
                    </ContentTemplate>
                </asp:UpdatePanel>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger  ControlID="buttonOuter" EventName="Click"/>
            </Triggers>
        </asp:UpdatePanel>

这是code behinde

 protected void Page_Load(object sender, EventArgs e)
{

}
protected void buttonInner_Click(object sender, EventArgs e)
{
    up2.Update();
    lblTime2.Text = DateTime.Now.Second.ToString();
}
protected void buttonOuter_Click(object sender, EventArgs e)
{
    lblTime.Text = DateTime.Now.Second.ToString();
}
于 2015-05-23T06:53:08.547 回答
0

如果 UP1 是外部 UpdatePanel ,而 UP2 是内部,并且您想防止外部被内部的 Button 更新(用于 exp:Btn):

UP1.UpdateMode="Conditional"
UP1.ChildrenAsTriggers= "False"

此外,您不应将 Btn 添加为 UP1 中的触发器(如以下代码)

<asp:UpdatePanel ID="UP1" runat="server" ....>
   <ContentTemplate>
    ....
   </ContentTemplate>
  <Triggers>
   <asp:Trigger ControlID="btn" EventName="Click"/>
  </Triggers>
</asp:UpdatePanel>
于 2015-07-09T01:01:28.350 回答