2009-12-29 63 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" /> 
相关问题