从 RadComboBox 移除服务器端事件

Removing Server-Side Event from RadComboBox

我希望在特定情况下从 Telerik RadComboBox 中删除 "OnSelectedIndexChanged" 事件。

当场景满足时,我希望删除 "myRCB_SelectedIndexChanged",当不满足时,让事件保持原样。

我试过:

myRCB.SelectedIndexChanged -= myRCB_SelectedIndexChanged

并且:

myRCB.SelectedIndexChanged -= new RadComboBoxSelectedIndexChangedEventHandler(myRCB_SelectedIndexChanged)


两者都不起作用,并且该事件仍会在更改索引时触发。感谢您的帮助!

在正常控件的情况下,假设签名正确,第一个应该可以工作,但在这种情况下,控件是来自 dll (?) 的外部控件,我不确定,但可以在每个页面加载时填充处理程序?

您可以尝试在某些条件已满的情况下在页面加载时禁用处理程序。出于测试目的,您可以将删除条件保存到标签或 sessoon 变量中。

第一个的语法对我有用。设置断点以确保不会重新添加事件处理程序。否则,可以在该场景上设置一个标志,并用 if 语句包装整个事件处理程序方法。

两个回复都让我找到了答案(谢谢!)。我在必要的地方添加了断点,观察 when/where 事件处理程序是 added/removed,发现用户体验仍然存在——页面仍然 post 返回并且 运行 SelectedIndexChanged 事件,即使删除已经完成并且此后添加不再发生。

不过,这样做让我想到了简单地禁用 AutoPostBack 我曾经试图删除事件处理程序的地方。现在,我不是在 .aspx 中单独定义 AutoPostBack="true",而是在 .cs 中必要时删除它。

我希望这对其他人有所帮助,因为这让我的头在桌子上撞了好几天!