我有一个ScriptControl(需要ScriptManager)用 JavaScript 来处理客户端交互ICallbackEventHandler和来回通信。一切都与页面上的一个或多个控件实例完美配合。我将控件放在GridView带有排序的 a 中,它仍然可以工作。但是,我将其GridView放入 an 中UpdatePanel,现在每当我排序时,每个实例都会出现以下错误:
Sys.InvalidOperationException: Two components with the same id 'GridView_ctl02_MyControl' can't be added to the application.
有人可以指出我如何解决这个问题的正确方向吗?我假设在尝试使用具有相同 ID 的新对象之前ScriptManager不会处理旧对象。我认为/组合会自动处理将被替换的对象?Sys.UI.Control$create()UpdatePanelScriptManager
编辑:这个页面似乎支持我的想法:http: //msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.registerdispose.aspx
使用 RegisterDispose 方法为 UpdatePanel 控件内的控件注册处置脚本。在异步回发期间,可以更新、删除或创建 UpdatePanel 控件。更新或删除面板时,会调用为 UpdatePanel 内的控件注册的任何处置脚本。在典型的页面开发场景中,您不必调用 RegisterDispose 方法。
只是为了仔细检查我alert("dispose " + this.element.id)在我的 JavaScriptdispose()函数中放置了一个。每个实例都会发出警报dispose GridView_ctl02_MyControl,但之后我收到两个组件不能具有相同名称的错误GridView_ctl02_MyControl。我很茫然...