2010-08-24 108 views
1

我有一个带有列表框的asp.net页面。多个事件处理程序订阅其OnSelectedIndexChanged事件。当SelectedIndex被更改时ListBox不会触发OnSelectedIndexChanged事件

当我以编程方式更改SelectedIndex没有任何事件被触发。

现在对此的一个破解是调用每个事件处理程序,但这已经导致了错误,因为人们不知道当添加新的事件处理程序时他们不得不这样做。

我可以在Winforms应用程序中执行此操作,甚至在事件触发的代码中更改了SelectedIndex。有没有人见过这个?

回答

2

看看ListBox类的源代码及其基础 - ListControl。您会注意到OnSelectedIndexChanged方法是从RaisePostDataChangedEvent方法中调用的。这意味着,只有在客户端选择的索引被更改并且ViewState中存储的值不等于PostData附带的数据时,才会引发SelectedIndexChanged事件。因此,如果在服务器代码中更改了SelectedIndex,则不应引发此事件。

相关问题