2009-12-03 6 views
4

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

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

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

+9

Не забудьте установить код, это облегчает получение помощи. – ProgrammingPope

+0

У меня такая же проблема ... кто-нибудь? –

+1

Какой javascript вы используете? Я не могу дублировать проблему с помощью простого javascript, поэтому, пожалуйста, разместите код, который вы используете, чтобы мы могли попробовать и помочь. – sgriffinusa

ответ

0

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

+0

Нет сообщений об ошибках js. –

0

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

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

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

4

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

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

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

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

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

+0

У меня, наверное, такая же проблема ..Было странно, что Firefox не запускал обратную передачу на двух моих компьютерах-разработчиках, но на третьем это было прекрасно (это было на ссылке). Это не значит, что нам нужно было перейти в IE для демонстрационных целей. попробуйте предложение fdfrye .. Это выглядит очень правдоподобным – Markive

0

У меня была эта проблема раньше, я решил это путем изменения моего web.config

(check here)

0

что-то, что я заметил, что 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 
Смежные вопросы