ASP.NET DropDown SelectedIndexChanged 未在 Firefox 中使用 UpdatePanel 触发

Posted

技术标签:

【中文标题】ASP.NET DropDown SelectedIndexChanged 未在 Firefox 中使用 UpdatePanel 触发【英文标题】:ASP.NET DropDown SelectedIndexChanged not firing in Firefox with UpdatePanel 【发布时间】:2010-12-22 21:45:14 【问题描述】:

我有一个包含下拉列表的asp:Updatepanel,我在下拉列表的onchange 事件上运行了一些javascript。我还在下拉列表的selectedindexchanged 上触发了一些服务器端代码。

这在 IE 中可以正常工作,但在 Firefox 中,selectedindexchanged 事件永远不会被调用。

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

【问题讨论】:

别忘了放一些代码,这样更容易获得帮助。 我也有同样的问题...有人吗? 你用的是什么javascript?我无法用简单的 javascript 复制该问题,因此请发布您正在使用的代码,以便我们尝试提供帮助。 我以前也遇到过这个问题,你能把你的web.config贴出来吗? 【参考方案1】:

我很确定您在客户端遇到了一些问题,因为有类似的报告。使用 firebug 跟踪 js 错误。 看看 http://www.webmasterworld.com/profilev4.cgi?action=view&member=Nazgoth 关于 Firefox 中的 ochange 事件。 如果找不到问题的根源,请在此处发布您的 js。

【讨论】:

【参考方案2】:

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

我们做到了这一点,我们最终能够做到这一点的唯一方法是将事件附加到下拉列表本身的 id 并通过 document.getElementById 访问它(很容易找到带有视图源的 id :)

蹩脚的答案和蹩脚的解决方案,但几年前我们就是这样解决这个问题的。如果有人真的知道如何解决它会很感兴趣:)

【讨论】:

【参考方案3】:

我同意这里的其他一些海报。 IE、Chrome 和 FF 似乎以不同的方式使用客户端和服务器端事件处理程序处理服务器端控件。根据我的经验,有时他们会等待客户端 JavaScript 结束,然后执行回发以处理服务器端......但情况并非总是如此。

我总是求助的解决方案:

继续在你的 DropDownList 上设置 onChange() 事件...然后在你的 JavaScript 中,使用类似

的东西手动强制回发
__doPostBack('<%= DropDownList.ClientID %>', '');

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

【讨论】:

我可能也遇到过同样的问题.. 很奇怪 Firefox 不会在我的两台开发计算机上触发回发,但在第三台计算机上却很好(这是在链接按钮上)。 . 这意味着我们不必为了演示目的而转移到 IE.. 我会尝试 fdfrye 的建议.. 看起来很合理【参考方案4】:

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

(check here)

【讨论】:

【参考方案5】:

我注意到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

【讨论】:

以上是关于ASP.NET DropDown SelectedIndexChanged 未在 Firefox 中使用 UpdatePanel 触发的主要内容,如果未能解决你的问题,请参考以下文章

Kendo UI React Dropdown悬停颜色

ASP.net试卷

在ASP.NET MVC中使用DropDownList

在 ASP.NET Core 的 SelectList 中显示数据

ASP.NET 新手 - 无法从 SQL 数据库更新 DataGrid

如何在禁用的 asp.net 下拉列表中添加警报?