找不到ID为'xxx'的UpdatePanel.如果它是动态更新的,那么它必须在另一个UpdatePanel内

Amy*_*ung 14 vb.net asp.net ajax telerik

我有一个带有Ajax Tab控件的页面,其中一个选项卡中是一个webcontrol,作为Telerik RadGrid,Edit窗体指向另一个Web控件.该编辑表单还包含Ajax选项卡,在其中一个选项卡上,还有另一个webcontrol的Ajax模式弹出窗口.

初始webcontrol在其自己的页面上使用时工作正常,但是当在Ajax选项卡中根据需要使用控件时,编辑表单无法显示.脚本管理器抛出以下错误:

Microsoft JScript运行时错误:Sys.InvalidOperationException:找不到ID为"xxx"的UpdatePanel.如果它是动态更新的,那么它必须在另一个UpdatePanel内.

对此的任何帮助将不胜感激.

Moh*_*dan 14

当您向其添加不可见控件时,Telerik RadAjaxManager中会出现此问题.

因此,如果您需要显示/隐藏AJAX控件,建议您从代码后面(基于控件可见性状态)而不是ASPX代码语法添加AJAX设置.

有关更多信息:请在Telerik论坛上查看此答案.


小智 7

好吧,我正在考虑你的脚本中会出现这个错误.如果您显示/隐藏更新面板,则会出现此错误.我所知道的最佳解决方案也是如此,它将更新面板放入另一个更新面板的内容模板中,该更新面板将是您正在显示/隐藏的更新面板的父级.

<asp:UpdatePanel ID="Panel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:UpdatePanel ID="Panel2" runat="server" UpdateMode="Conditional">
             <ContentTemplate>
                 <asp:Label ID="labwl1" runat="server" Text="Label">
                 </asp:Label>
             </ContentTemplate>
        </asp:UpdatePanel >
    </ContentTemplate>
</asp:UpdatePanel >
Run Code Online (Sandbox Code Playgroud)

现在,如果您将使用id隐藏更新面板,Panel2则不会出现任何错误.


小智 2

为了开始故障排除,我个人会尝试删除部分代码,从而指定错误的原因。例如,删除网格并在单击选项卡时动态加载用户控件以查看问题是否仍然存在,然后删除内部 ajax 选项卡或模式弹出窗口并执行另一次检查等。