我有一个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()
UpdatePanel
ScriptManager
编辑:这个页面似乎支持我的想法: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
。我很茫然...