【问题标题】:Why SelectedIndexChanged fires for a DropDownList when a button is clicked?为什么单击按钮时会为 DropDownList 触发 SelectedIndexChanged?
【发布时间】:2011-01-28 00:17:00
【问题描述】:

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

【问题讨论】:

    标签: .net asp.net drop-down-menu viewstate autopostback


    【解决方案1】:

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

    编辑

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

    【讨论】:

      【解决方案2】:

      来自微软的反馈:- 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 下拉列表。 "

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          我有同样的问题。我发现我的问题是我调用了我的渲染函数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
          

          【讨论】:

            猜你喜欢
            • 2011-10-12
            • 1970-01-01
            • 2016-03-14
            • 2023-04-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多