2009-12-03 85 views
4

我有一個asp:Updatepanel,它包含一個下拉列表,並且我在下拉列表的onchange事件中運行了一些Javascript。我還在下拉菜單的selectedindexchanged上激發了一些服務器端代碼。ASP.NET DropDown SelectedIndexChanged未在Firefox中使用UpdatePanel觸發

這在IE中運行正常,但在Firefox中selectedindexchanged事件永遠不會被調用。

我認爲這可能與onchangeselectedindexchanged衝突,但我找不到解決方案來解決這個問題。

+9

不要忘記放一些代碼,它會使得獲得幫助變得更容易。 – ProgrammingPope 2009-12-03 16:37:29

+0

我有同樣的問題...任何人? – 2010-07-21 15:16:09

+1

您使用的是什麼javascript?我無法用簡單的JavaScript複製問題,因此請發佈您正在使用的代碼,以便我們可以嘗試並提供幫助。 – sgriffinusa 2010-07-21 17:55:45

回答

0

隨時糾正我,因爲這是我的解決方案很很久以前:

我們打這一點,我們最終能夠做到這一點的唯一方法是對事件重視的標識下拉本身並通過document.getElementById訪問它(很容易找到與查看源代碼的ID :)

跛腳的答案與一個跛腳的解決方案,但這就是我們如何解決這個問題在幾年前。如果有人真的知道如何解決它會感興趣:)

4

我會同意一些其他的海報在這裏。 IE,Chrome和FF似乎以不同的方式處理服務器端控件,同時使用客戶端和服務器端事件處理程序。根據我的經驗,有時他們會等待客戶端JavaScript結束,然後執行回發以處理服務器端......但情況並非總是如此。

我總是向解決方案:

來吧,手動設置你的DropDownList的的onChange()事件只...然後在您的JavaScript中,使用類似的

__doPostBack('<%= DropDownList.ClientID %>', ''); 
強制回傳

語法使您的頁面使用該控件進行回發。在你的服務器端代碼中,你可以從DropDownList中查詢當前索引值,並執行任何你想要的處理... UpdatePanel應該完美地處理這種情況...

+0

我可能有同樣的問題..這真是太奇怪了,Firefox不會在我的兩臺開發計算機上啓動回發功能,但是第三次​​啓動時它沒有問題(這是在一個linkbutton)..這意味着我們不得不移動到IE來演示目的..我會嘗試fdfrye的建議..它看起來非常合理 – Markive 2010-07-28 10:06:29

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 
相關問題