ASP.NET的UpdatePanel在Firefox中无法触发DropDown的SelectedIndexChanged事件

4

我有一个包含下拉列表的asp:Updatepanel,并且在下拉列表的 onchange 事件上运行一些JavaScript。同时,在下拉列表的 selectedindexchanged 事件上也会执行一些服务器端代码。

在IE中可以正常工作,但在Firefox中,selectedindexchanged 事件从未被调用。

我认为这可能与onchangeselectedindexchanged 冲突有关,但是我找不到解决方案来解决这个问题。


9
别忘了放上代码,这样可以更容易得到帮助。 - ProgrammingPope
我也遇到了同样的问题...有人能帮忙吗? - Jack Marchetti
1
你在用什么JavaScript?我无法通过简单的JavaScript复制该问题,因此请发布您正在使用的代码,以便我们可以尝试帮助。 - sgriffinusa
我之前遇到过这个问题,你能发一下你的web.config文件吗? - Nealv
5个回答

4
我同意其他帖子的一些观点。IE、Chrome和FF似乎以不同的方式处理服务器端控件的客户端和服务器端事件处理程序。我的经验是有时它们会等待客户端JavaScript结束,然后执行回发以处理服务器端...但这并不总是情况。
我总是采用以下解决方案:
只在您的DropDownList上设置onChange()事件...然后在JavaScript中,使用类似于...手动强制回发
__doPostBack('<%= DropDownList.ClientID %>', '');

语法使您的页面在回发时使用该控件。在服务器端代码中,您只需查询DropDownList的当前索引值,并执行所需的任何处理... UpdatePanel应该完美处理这种情况...


我可能遇到了同样的问题。很奇怪,Firefox在我的两台开发电脑上无法触发postback,但在第三台电脑上却可以(这是在linkbutton上)... 这意味着我们不得不转而使用IE进行演示。我会尝试fdfrye的建议... 看起来非常有道理。 - Markive

0

0

请随意纠正我,因为这是我很久很久以前的解决方案:

我们遇到了这个问题,唯一能够做到的方法就是将事件附加到下拉列表本身的id上,并通过document.getElementById访问它(使用查看源代码很容易找到id)

这是一个愚蠢的答案和愚蠢的解决方案,但那是我们几年前解决这个问题的方法。如果有人真正知道如何解决它,我们会感兴趣 :)


0

我以前遇到过这个问题,我通过更改我的web.config来解决它

(在此检查)


0
我注意到的是,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

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