【问题标题】:Why DropDownList do not fire SelectedIndexChanged and select ALWAYS the first item on the list为什么 DropDownList 不触发 SelectedIndexChanged 并始终选择列表中的第一项
【发布时间】:2015-04-23 16:00:31
【问题描述】:

我有 2 个下拉列表(ddlSchools 和 ddlDegrees)和 1 个链接按钮来提交查询。在 updatePanel 和两个下拉列表中都有 autoPostBack = "true",当 ddlSchools 更改其索引时,它会调用 LoadDegrees() 以显示该学校提供的相应学位

对应的函数是 加载学校() 加载度()

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   If Not Page.IsPostBack Then
      LoadSchools()
      LoadDegrees()
   End If
End Sub 

Protected Sub ddlSchool_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ddlSchool.SelectedIndexChanged           
    LoadDegrees()            
End Sub

为什么我总是选择 ddlDegrees 中的其他项目而不是它回到第一个的第一个项目?甚至 SelectedIndexChanged 事件也不会被触发

【问题讨论】:

  • 如果您在选择更改上没有做任何事情,请尝试删除 ddlDegrees 上的 autopostback="true" 属性
  • LoadDegrees() 中是否碰巧有 DataBind() 调用?
  • @Sushil 当然可以,但是当我通过链接按钮提交时,即使我在 ddlDegree 中选择了其他值,传递的值始终是第一个,在这两种情况下我都迷路了
  • 还有其他调用LoadDegrees()函数的地方吗?尝试在 LoadDegrees() 函数中放置一个断点并进行调试。如果它是从其他地方更改的,您将能够从调用堆栈中找到它。
  • 阅读this,它可能对你有帮助。

标签: asp.net vb.net postback


【解决方案1】:

要检测更改,您必须为 DataValueField 属性设置不同的值才能触发事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2011-01-28
    相关资源
    最近更新 更多