【问题标题】:I am getting Could not find UpdatePanel with ID Exception while using UpdatePanel在使用 UpdatePanel 时,我遇到无法找到 ID 异常的 UpdatePanel
【发布时间】:2011-07-06 12:02:51
【问题描述】:

在一个 aspx 页面上,我有一个下拉列表和一个面板控件,下拉列表自动回发是真的。在下拉列表控件中有两个选项,根据用户选择的选项,我会显示一个包含 ajax updatepanel 的用户控件,其中的计时器配置为每隔一秒启动一次异步请求。当用户在下拉列表控件中选择另一个选项并且用户控件在面板控件中发生更改时,就会出现问题。发生的错误如下所示:

Sys.InvalidOperationException:找不到 ID 为“ctl00_ctl00_cphMainMasterPage_ChildContent_ctrlPinStatusMonitor_updpnlPinStatus”的 UpdatePanel。如果它是动态更新的,那么它必须在另一个 UpdatePanel 中。

我认为问题在于,启动异步请求的最后一个控件在面板控件中不再可用,并被新的其他用户控件替换。任何人都可以提出解决此错误的解决方案。

【问题讨论】:

  • 我不确定,但您的计时器似乎有问题
  • 我不这么认为,因为错误是关于找不到带有 ID 的 UpdatePanel...
  • 正如你所提到的,有一个计时器每隔一秒触发一次异步请求,如果这次用户更改其他选项,在这种情况下,你必须停止在后台运行的计时器。跨度>

标签: c# asp.net ajax updatepanel


【解决方案1】:

让你的 Timer 在执行前检查 DOM 是否存在正确的控件。

【讨论】:

  • 我对此一无所知,因为我没有为这种情况添加任何 javascript
【解决方案2】:

我通过在页面加载事件处理程序中放置相同的逻辑解决了这个问题,当用户从下拉列表控件中选择不同的选项时,我使用它来加载用户控件,即下拉列表中的逻辑 presenet selectedindexchanged 事件处理程序。这样,上次发起异步请求的更新面板在下拉列表的自动回发选项生成回发后仍然可用。

【讨论】:

    猜你喜欢
    • 2012-07-28
    • 2010-12-22
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2012-11-18
    相关资源
    最近更新 更多