在aspx页面上,我有一个下拉列表和一个面板控件,dropdownlist autopostback为true。在dropdownlist控件中有两个选项,根据用户选择的选项,我显示一个包含ajax updatepanel的用户控件,其中一个计时器配置为每隔一秒后启动异步请求。当用户在下拉列表控件中选择其他选项并且在面板控件中更改了用户控件时,就会出现问题。发生的错误如下所示:
Sys.InvalidOperationException:找不到ID为'ctl00_ctl00_cphMainMasterPage_ChildContent_ctrlPinStatusMonitor_updpnlPinStatus'的UpdatePanel。如果它正在动态更新,那么它必须位于另一个UpdatePanel内。
我认为问题在于,已启动异步请求的最后一个控件在面板控件中不再可用,并被新的其他用户控件替换。任何人都可以建议解决这个错误。
答案 0 :(得分:0)
让你的Timer在执行之前检查DOM是否存在正确的控件。
答案 1 :(得分:0)
我通过在页面加载事件处理程序中放置相同的逻辑来解决问题,当用户从下拉列表控件中选择不同的选项(即下拉列表selectedindexchanged事件处理程序中的逻辑presenet)时,我用它来加载用户控件。通过这种方式,在dropdownlist的autopostback选项生成回发后,上次启动异步请求的更新面板仍然可用。