我正在创建一系列嵌套在更新面板中的客户端组件控件。我第一次创建控件时,一切都按预期工作,但是,当我在更新面板上触发更新并且它进行部分回发时,控件会返回几个javascript错误,描述控件是如何在页面上注册的。
我得到了一系列错误,说的是: “错误:Sys.InvalidOperationException:具有相同ID”master_ctl40_CCB_PALETTES“的两个组件无法添加到应用程序”
任何想法?
答案 0 :(得分:1)
尝试这些技巧:
答案 1 :(得分:0)
您在哪种情况下将组件添加到更新面板?即您是否将它们放在页面加载事件中而没有回发检查,或者您是否将它们放在更新面板加载事件中?等...
答案 2 :(得分:0)
看起来您的客户端对象被多次创建。
如果您希望在更新面板刷新时替换客户端控件,则它们应该继承自Sys.UI.Control,后者需要在其构造函数中使用一个元素。当该元素被更新面板替换时,将丢弃客户端对象,然后重新创建。如果您当前正在服务器端使用ScriptComponentDescriptor来定义客户端控件实例,那么您将需要切换到ScriptControlDescriptor。
通过它的声音,您的客户端对象只是从Sys.Component继承,它将一直挂起,直到它们被手动处理,这就是为什么您收到有关具有相同ID的多个组件的错误。
我建议不要在每个帖子中使用新的ID - 这将继续创建新的客户端对象,而不会清理旧的。