2009-12-29 68 views
0

這太令人沮喪了。我做了這一百萬次!出於某種原因,Firefox不會在我的下拉列表中選擇一個項目。爲什麼? (它可以在IE找到)在ASP中選擇項DropDownList:在FireFox中不起作用

ASPX頁面

<asp:DropDownList ID="ddlPlan" runat="server" CssClass="TDSelect" Width="250px" AutoPostBack="true" DataTextField="Plan_Name" DataValueField="Plan_ID" /> 

ASPX.VB後面的代碼

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    Try 

     GetQueryStringInfo() 

     If Not Page.IsPostBack Then 
     InitDropDowns() 
     LoadTasks() 
     SetUI() 
     End If 

    Catch ex As Exception 
     lblResults.Text = "Error loading page: " & TeamDynamix.Error.TDError.HandleException(Me.DbConnStr, Me.UID, ex) & ": " & ex.Message 
    End Try 

    End Sub 

    Private Sub InitDropDowns() 

    'Plan' 
    'LOAD PLANS' 
    Using oDR As SqlClient.SqlDataReader = Common.GetSPDataReader(Me.DbConnStr, "PlansSelect", _ 
        Common.MP("@UID", SqlDbType.VarChar, 40, Me.UID), _ 
        Common.MP("@TID", SqlDbType.Int, 4, Me.TID)) 

     If oDR.HasRows Then 
     ddlPlan.DataSource = oDR 
     ddlPlan.DataBind() 
     End If 

     'Clean up' 
     oDR.Close() 

    End Using 

    'INSERT BLANK ITEM' 
    ddlPlan.Items.Insert(0, "") 

    'IF PLANID IS SET, SELECT APPROPRIATE PLAN' 
    If PlanID > 0 Then  
     If ddlPlan.Items.FindByValue(PlanID) IsNot Nothing Then 
     ddlPlan.SelectedValue = PlanID 
     End If  
    End If 

    End Sub 

我已經在Firefox收視源檢查所提供的HTML。它似乎正確地創建了元素,並且所有選項(值和文本都設置正確),並且它還將selected =「selected」放置在列表中的相應項目上!所以我不確定爲什麼這個項目沒有被選中。注意:它現在的工作,讀來結束這個問題,看到新的「真實」的問題......

呈現的HTML

<select id="ddlPlan" class="TDSelect" style="width: 250px;" onchange="javascript:setTimeout('__doPostBack(\'ddlPlan\',\'\')', 0)" name="ddlPlan"> 
    <option value=""/> 
    <option value="517">(Copy of) AAA</option> 
    <option value="500">(Copy of) andrew test</option> 
    <option value="249">(Copy of) Test</option> 
    <option value="359">Brandon's Test</option> 
    <option value="472">BTEST2</option> 
    <option value="1498">Date Issue Test</option> 
    <option value="1516">Date Issue Test</option> 
    <option value="1529">Date Issue Test</option> 
    <option value="367">Import</option> 
    <option value="91">Task Import</option> 
    <option value="331">Task Plan Import</option> 
    <option value="332">Task Plan Template Test </option> 
    <option value="520">test 456</option> 
    <option value="1464">test 456</option> 
    <option value="1520">test 456</option> 
    <option value="1480">Test Checking Out</option> 
    <option value="1527">Test Plan</option> 
    <option value="560">TestPlan-B</option> 
    <option value="1465">TestPlan-B</option> 
    <option value="1521">TestPlan-B</option> 
    <option value="605" selected="selected">Work Items</option> 
</select> 

IT剛出來工作
我剛剛發佈,並回答這是因爲它剛剛開始工作,沒有任何明顯的原因。那麼問題就變成了:FireFox中是否存在某種緩存或其他機制會導致此行爲?

+0

凡PlanID首先設置? – 2009-12-29 15:09:42

+0

你可以發佈下拉框的呈現HTML代碼片段嗎? – 2009-12-29 15:09:59

+0

PlanID來自查詢字符串。它是頁面類中的一個私有Int32變量。當我遍歷代碼時,它會得到適當的設置。 – 2009-12-29 15:10:34

回答

0

好的,由於某種原因,這只是開始工作。我發誓它以前沒有工作,但我沒有改變任何東西,它開始工作。可能某種緩存導致這個問題或類似的東西?

+0

究竟是什麼問題?它是否填充下拉列表,但不會自動選擇您標記爲selected =「selected」的那個? – 2009-12-29 18:20:11

+0

肖恩 - 沒錯。你可以從我在這個問題上發佈的呈現的HTML中看到。它沒有在下拉列表中顯示爲選定的項目。 – 2009-12-31 13:29:54

1

我注意到您在代碼背後的HTML和PlanID中使用「Plan_ID」。他們應該是一樣的。

+0

Plan_ID字段是從存儲過程返回的整數。 PlanID變量是從查詢字符串中提取的頁面類的私有變量。這些絕對不需要匹配。下拉列表中的數據綁定基本上調用oDR(「Plan_ID」)來獲取綁定到列表的每個項目的值。 -1 – 2009-12-29 15:08:26

1

有趣的,你有!Page.IsPostback包裝綁定DropDown的代碼?如果答案是否定的,DropDown將在每次回傳中重新綁定,並且所選值將丟失。

+0

只有在頁面不是回發時纔會運行。我將對這個問題進行編輯以反映這一點。 – 2009-12-29 15:03:45

+0

我將輸出複製到一個html文件中,在Firefox中打開它,它與「工作項目」是選定的值一起工作。 – 2009-12-29 15:17:20

1

我有這個問題與Firefox,我不得不將自動完成選項設置爲「關閉」DropDownList。

實施例:

<asp:DropDownList ID="ddlName" runat="server" autocomplete="off" /> 
相關問題