7

我有一个 ASP.NETDropDownList和. 我在页面上有一个什么都不做的按钮。如果我更改 ddl 中的选择,它会回发,这是预期的。如果我单击该按钮,则页面会发回并且 ddl 会触发。为什么会被解雇?AutoPostBack=trueEnableViewState=falseSelectedIndexChanged

4

4 回答 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 - 用户未更改

"感谢您的反馈。如果在页面或DropDownList控件上禁用了ViewState,则无法保存所选索引,因此每次回发看起来都已更改所选索引。您可以自己保存所选索引并与它进行比较看看选择是否真的改变了,或者你可以在 DropDownList 上启用 ViewState。"

在您的情况下,下拉列表的视图状态为 false。启用相同或您可以按照上面的建议比较所选项目的索引。

于 2010-03-16T08:10:24.980 回答
2

尝试启用视图状态。这是一个常见的问题。

编辑

如果您不想启用视图状态,则必须自己跟踪下拉列表值,就像这个人所做的 DropDownList OnSelectedIndexChange to 0th index w/out ViewState

于 2010-03-16T08:07:42.820 回答
1

如果您在 page_load 中加载 ddl,当您单击按钮时,它会再次进入 page_load 并再次加载 ddl 项目,从而更改所选索引。但我不知道你的代码,所以这是一个假设。

于 2010-03-16T08:13:32.990 回答
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
于 2012-06-12T15:13:07.327 回答