如果UpdatePanel
位于另一个UpdatePanel
内,并且在内部UpdatePanel中有一个按钮,我想在点击此按钮时只刷新内部UpdatePanel
。怎么样?
答案 0 :(得分:5)
在innerupdate面板中,将updatemode设置为conditional,并将outerupdatepanel childrenastriggers属性设置为false。在内部更新面板中添加一个postbacktrigger并将其设置为将导致回发的按钮。像这样的东西
<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>
答案 1 :(得分:5)
@Waqar Janjua 是对的。
但您不必将ChildrenAsTriggers设置为false,有时将其保留为true会更方便。
在两个updatepanel中设置属性 UpdateMode =“Conditional”(将ChildrenAsTriggers保留为默认值true)。然后在:Janjua说:到你的按钮添加触发器:
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btn" />
</Triggers>
当UpdateMode不是条件时,每个updatepanel都会更新它。
答案 2 :(得分: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();
}
答案 3 :(得分:0)
如果UP1是外部UpdatePanel,而UP2是内部的,你想要阻止外部用内部的Button更新(对于exp:Btn):
UP1.UpdateMode="Conditional"
UP1.ChildrenAsTriggers= "False"
此外不应在UP1中将Btn添加为触发器(如下面的代码)
<asp:UpdatePanel ID="UP1" runat="server" ....>
<ContentTemplate>
....
</ContentTemplate>
<Triggers>
<asp:Trigger ControlID="btn" EventName="Click"/>
</Triggers>
</asp:UpdatePanel>