ASP.NET DropDown SelectedIndexChanged не срабатывает в Firefox с UpdatePanel - PullRequest
4 голосов
/ 03 декабря 2009

У меня есть asp:Updatepanel, который содержит раскрывающийся список, и я запускаю Javascript для события onchange раскрывающегося списка. Я также запускаю некоторый код на стороне сервера в selectedindexchanged раскрывающегося списка.

Это нормально работает в IE, но в Firefox событие selectedindexchanged никогда не вызывается.

Я думаю, что это может быть что-то, что противоречит onchange и selectedindexchanged, но я не могу найти решение, чтобы решить эту проблему.

Ответы [ 5 ]

4 голосов
/ 27 июля 2010

Я бы согласился с некоторыми другими постерами здесь. IE, Chrome и FF, похоже, по-разному обрабатывают серверные элементы управления с обработчиками событий как на стороне клиента, так и на стороне сервера. По моему опыту, иногда они ждут завершения клиентского JavaScript, а затем выполняют постбэк для обработки на стороне сервера ... но это не всегда так.

Решение, к которому я всегда обращаюсь:

Идем дальше и устанавливаем событие onChange () только в вашем DropDownList ... затем в вашем JavaScript, вручную принудительно выполняем обратную передачу, используя что-то вроде

__doPostBack('<%= DropDownList.ClientID %>', '');

синтаксис, чтобы ваша страница использовала этот элемент управления для обратной передачи. В своем коде на стороне сервера вы можете просто запросить текущее значение индекса из DropDownList и выполнить любую обработку, какую захотите ... UpdatePanel должен отлично справиться с этой ситуацией ...

0 голосов
/ 20 октября 2012

Что-то, что я заметил, это то, что событие SelectedIndexChanged не сработает, пока значение не будет изменено. Так что, если у ListItems вашего DropDownList нет уникальных значений, просто добавьте случайное число, чтобы сделать уникальный.

    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
0 голосов
/ 28 июля 2010

У меня была эта проблема однажды, я решил ее, изменив свой web.config

(проверьте здесь)

0 голосов
/ 27 июля 2010

Не стесняйтесь поправлять меня, так как это было мое решение очень и очень давно:

Мы достигли этого, и единственный способ, которым мы смогли это сделать, - это прикрепить событие к идентификатору самого раскрывающегося списка и получить к нему доступ через document.getElementById (достаточно просто найти идентификатор с источником представления :)

Хромой ответ с неудачным решением, но так мы обошли проблему несколько лет назад. Было бы интересно, если кто-нибудь на самом деле знает, как это исправить:)

0 голосов
/ 22 июля 2010

Я почти уверен, что у вас есть некоторые проблемы на стороне клиента, так как были подобные отчеты. Используйте firebug для отслеживания ошибки js. взгляните на http://www.webmasterworld.com/profilev4.cgi?action=view&member=Nazgoth о событии ochange в firefox. Если вы не можете найти источник своей проблемы, опубликуйте свой js здесь.

...