我有一个包含下拉列表的asp:Updatepanel
,并且在下拉列表的 onchange
事件上运行一些JavaScript。同时,在下拉列表的 selectedindexchanged
事件上也会执行一些服务器端代码。
在IE中可以正常工作,但在Firefox中,selectedindexchanged
事件从未被调用。
我认为这可能与onchange
和 selectedindexchanged
冲突有关,但是我找不到解决方案来解决这个问题。
我有一个包含下拉列表的asp:Updatepanel
,并且在下拉列表的 onchange
事件上运行一些JavaScript。同时,在下拉列表的 selectedindexchanged
事件上也会执行一些服务器端代码。
在IE中可以正常工作,但在Firefox中,selectedindexchanged
事件从未被调用。
我认为这可能与onchange
和 selectedindexchanged
冲突有关,但是我找不到解决方案来解决这个问题。
__doPostBack('<%= DropDownList.ClientID %>', '');
语法使您的页面在回发时使用该控件。在服务器端代码中,您只需查询DropDownList的当前索引值,并执行所需的任何处理... UpdatePanel应该完美处理这种情况...
我相信你在客户端遇到了一些问题,因为已经有类似的报告了。使用Firebug跟踪JS错误。 看看http://www.webmasterworld.com/profilev4.cgi?action=view&member=Nazgoth关于Firefox中ochange事件的内容。 如果你找不到问题的源头,请在这里发布你的JS代码。
请随意纠正我,因为这是我很久很久以前的解决方案:
我们遇到了这个问题,唯一能够做到的方法就是将事件附加到下拉列表本身的id上,并通过document.getElementById访问它(使用查看源代码很容易找到id)
这是一个愚蠢的答案和愚蠢的解决方案,但那是我们几年前解决这个问题的方法。如果有人真正知道如何解决它,我们会感兴趣 :)
SelectedIndexChanged
事件只有在值被改变时才会触发。 因此,如果您的DropDownList的ListItems没有唯一的值,只需添加一个随机数使其变得唯一。 Dim dt As DataTable
Dim dr As DataRow
Using d As DropDownList = ddl
With d
.Items.Clear()
dt = GetDataTable(Params)
' We add the index to the value field because the values need to be unique
' in order for the SelectedIndexChanged event to fire correctly
For k As Integer = 0 To dt.Rows.Count - 1
dr = dt.Rows(k)
.Items.Add(New ListItem(dr("column1"), k & ":" & dr("column2")))
Next
End With
End Using