我有一个相当复杂的自定义控件 - 自定义控件中有几个更新面板。

我正在尝试在更新面板中使用这样的控件:

    <asp:UpdatePanel ID="up1" runat="server">
    <ContentTemplate>
     <asp:Button ID="btn1" runat="server" Text="Sample Button" />&nbsp;&nbsp;<asp:Label ID="lblTime" runat="server"></asp:Label>    
     <cc1:MyCustomControl ID="MyCustomControl1" runat="server" >
    </cc1:MyCustomControl>
    </ContentTemplate>
</asp:UpdatePanel>

当我点击更新面板中的按钮时,它会执行异步回发,并且没有屏幕“闪烁”。当我单击自定义控件中的按钮时,页面会闪烁并返回完整的帖子。

在自定义控件中,有一些更新面板正在尝试执行完全回发(基于触发器)。

如果自定义控件内部有什么内容,我怎样才能使页面级别的UpdatePanel不进行完整的回发?

有帮助吗?

解决方案 2

找出类似问题的解决方案:如何让UpdatePanel拦截CompositeControl的DropDownList

除了我的控件导致回发是在一个带有完整回发触发器的updatepanel中。我能够将控制权拉出来,因此它没有在更新面板中嵌套并解决了它。

其他提示

您是否考虑过使用up1 UpdatePanel控件中的btn1控件显式设置asp:AsyncPostBackTrigger。

<asp:UpdatePanel ID="up1" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btn1" EventName="Click" />
    </Triggers>
    <ContentTemplate>     
        <asp:Button ID="btn1" runat="server" Text="Sample Button" />  
        <asp:Label ID="lblTime" runat="server"></asp:Label>         
        <cc1:MyCustomControl ID="MyCustomControl1" runat="server" />                 
    </ContentTemplate>
</asp:UpdatePanel>

编辑:您是如何尝试在更新面板的按钮的OnClick事件中显式调用Update方法的?这包括嵌入在自定义控件中的更新面板。

我首先看看自定义控件是否存在导致整页回发的其他问题,因为在任何情况下应该发生的是整个更新面板刷新(仍然使用ajax)。

之后,只需看看这个的Nesting UpdatePanel Controls部分: http://msdn.microsoft.com/en-us/library/bb398867的.aspx#

还要确保将ScriptManager控件的属性EnablePartialRendering设置为true。

在UpdatePanel上,设置属性 ChildrenAsTriggers =&quot; true&quot; 。这告诉UpdatePanel拦截源自UpdatePanel内部的所有 PostBack调用。

您可能还想探索 UpdateMode属性,确定触发更新的事件类型。 (默认情况下,如果屏幕上的任何其他面板都刷新,UpdatePanel将会刷新。这让我感到很沮丧,直到我意识到发生了什么。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top