如何从整体造成回发页的UpdatePanel停止?
-
05-09-2019 - |
题
我使用.NET 3.5和社区服务器的建筑物内页2008年的框架。
在一个页面中,我试图让一个UpdatePanel工作。
我把样品直接从ASP.NET网站的通过点击一个按钮更新一个UpdatePanel对于当前时间的时间,的,但由于某种原因,当我尝试和执行功能的整个页面刷新
下面是我有:
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Panel refreshed at " + DateTime.Now.ToString();
Label2.Text = "Panel refreshed at " + DateTime.Now.ToString();
}
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<fieldset>
<legend>UpdatePanel</legend>
<asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</fieldset>
</ContentTemplate>
</asp:UpdatePanel>
每当我按一下按钮,确保面板更新 - 但整个页面回!我可以看到整个页面闪烁。你到底我做错了?
我是一个嵌套母版的里面,但我不知道这是一个问题。难道还有什么东西在我使用导致所有事件回发?这个社区服务器架构
解决方案
你有没有尝试设置Button1
作为触发器部分的AsyncPostBackTrigger
?设置ChildrenAsTriggers
属性true
和UpdateMode
属性Conditional
。
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Panel refreshed at " + DateTime.Now.ToString();
UpdatePanel1.Update();
}
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
<ContentTemplate>
<fieldset>
<legend>UpdatePanel</legend>
<asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</fieldset>
</ContentTemplate>
</asp:UpdatePanel>
其他提示
我不是你的代码示例中看到Label2的上方。如果Label2的坐落在UpdatePanel外,将出现整页刷新,因为这是需要的页面正确更新Label2的。
默认情况下,的UpdatePanel只会动态刷新在其中的内容,当由在其中的控制触发。如果你需要做一些票友更新,说造成的刷新或在不同的面板标签的面板之外的按钮来进行更新,那么你需要设置你的UpdatePanel(S)的条件属性和进行一些手动更新电话在代码。
另一个可能的原因是,如果该页面有ClientIDMode="static"
,然后控制您希望刷新刚刚在UpdatePanel会刷新整个页面。
要解决这个问题,你只需要设置ClientIDMode="AutoID"
上应触发UpdatePanel的回发的控制(S)。
这是您的UpdatePanel控件集ChildrenAsTriggers="true"
。
“默认,UpdatePanel的只会动态刷新在其中的内容,当由在其中的控制触发。”
否则整个页面将被刷新!那点!
如果你有一个从.NET框架1.1版升级的旧项目,然后从您的web配置中删除此行,使其工作:
<xhtmlConformance mode="Legacy"/>