当单击按钮时,为什么下拉列表的SelectedIndexChanged事件会触发?

7
我有一个带有AutoPostBack=trueEnableViewState=false的ASP.NET DropDownList。页面上有一个没有任何作用的按钮。如果我更改ddl中的选择,它将发出后台请求,这是预期的。但如果我单击该按钮,页面会重新加载并且ddl的SelectedIndexChanged事件将触发。为什么会触发这个事件呢?
4个回答

10

Microsoft的反馈:http://connect.microsoft.com/VisualStudio/feedback/details/103844/dropdownlist-always-fire-selectedindexchanged-event-when-viewstate-is-disabled-and-the-selected-item-is-not-changed-by-the-user

感谢您的反馈。如果页面或下拉列表控件上未启用ViewState,则无法保存所选索引,因此每次回发都会看起来像所选索引已更改。您可以自己保存所选索引并与其进行比较,以查看选择是否真正更改,或者您可以在DropDownList上启用ViewState。

在您的情况下,下拉列表的viewstate为false。请启用相同的内容,或按上述建议比较所选项的索引。


2

1
如果在page_load中加载ddl,那么当你点击按钮时,它会再次调用page_load并重新加载ddl项目,从而更改所选索引。但我不知道你的代码,这只是一个假设。

0

我遇到了同样的问题。我发现我的问题是我将我的渲染函数命名为Page_Load

Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.PreRender

我完全忽略了页面默认加载函数Page_Load,然后在运行预呈现时再次加载它。我将其更改为以下内容,现在该函数仅被调用一次:

Sub Renderer(ByVal sender As Object, ByVal e As EventArgs) Handles Me.PreRender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接