我使用.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属性trueUpdateMode属性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"/>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top