6

我有一个自定义服务器控件,它似乎可以正常工作,直到我将它放入 UpdatePanel 中。一旦进入 UpdatePanel,它会继续正常工作,但当我的自定义服务器控件执行回发时,UpdatePanel 现在会执行完整回发。

我是否需要做任何事情来让我的自定义服务器控件在 UpdatePanel 中执行异步回发?

这是导致完整回发的相关代码。ecs:Pager 控件是我的自定义控件,即使它在 UpdatePanel 中也会导致 OnCommand 事件的完整回发。

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server">
    <ContentTemplate>
        <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" />
        <asp:Repeater ID="ClosedIssuesRepeater" runat="server">
        ....
        </asp:Repeater>
    </ContentTemplate>
</asp:UpdatePanel>
4

6 回答 6

1

您没有指定自定义控件中使用的控件类型。它们是按钮还是下拉菜单或其他东西?如果它们是按钮,则需要确保它们的 UseSubmitBehavior 属性设置为 False。

此外,您还需要通过ScriptManager.RegisterAsyncPostBackControl向页面的 ScriptManager 注册您的控件

于 2009-09-02T04:21:24.877 回答
1

将更新面板的更新模式设置为有条件的。

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" />
        <asp:Repeater ID="ClosedIssuesRepeater" runat="server">
        ....
        </asp:Repeater>
    </ContentTemplate>
</asp:UpdatePanel>
于 2009-08-23T21:46:07.360 回答
1

我遇到了类似的问题,发现将属性 ClientIDMode="AutoID" 添加到我的用户控件标签可以解决问题。

于 2010-12-08T13:54:43.810 回答
0

自定义控件是否实现 INamingContainer,回发是否来自该命名容器内的另一个控件?

我发现 UpdatePanel 和源代码管理之间的命名容器边界会导致这种行为。

于 2009-08-15T03:42:38.907 回答
0

抱歉...看不到页面的其余部分。

您的页面上也有 ScriptManager 吗?

于 2009-06-02T20:06:28.450 回答
0

一种选择可能是 AndreasKnudsen 建议将 AsyncPostBackTrigger 添加到您的面板

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server">
  <ContentTemplate>
    <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" />
    <asp:Repeater ID="ClosedIssuesRepeater" runat="server">
      ....
    </asp:Repeater>
  </ContentTemplate>
  <Triggers>
    <AsyncPostBackTrigger ControlID="ClosedIssuesPager" EventName="Command" />
  </Triggers>
</asp:UpdatePanel>

另一种选择是尝试将 ChildrenAsTriggers 添加到您的 UpdatePanel 标记中

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server" ChildrenAsTriggers="true">
于 2009-08-18T20:20:19.383 回答