DropDownList Items.FindByText正在插入:“Selected =”True

时间:2016-07-07 15:06:50

标签: asp.net vb.net

我有一个ASP.NET(VB)下拉列表,列出了用户可以在表单上选择的国家/地区。

前面的代码:

<asp:DropDownList ID="DropDownListCountry" runat="server" CssClass="form-control" 
    DataSourceID="SqlDataSourcecountryList" DataTextField="country_name_long" DataValueField="country_name_short">
</asp:DropDownList>

仅供参考,country_name_longcountry_name_short在此数据库中包含相同的值/文本。

在我背后的代码中,我选择“英国”作为默认的选定项目:

DropDownListCountry.DataBind()
DropDownListCountry.Items.FindByText("United Kingdom").Selected = True

我也试过使用它,但它产生了相同的结果:

DropDownListCountry.DataBind()
DropDownListCountry.SelectedIndex = DropDownListCountry.Items.IndexOf(DropDownListCountry.Items.FindByText("United Kingdom"))

当我查看最终结果HTML的来源时,此代码似乎插入了一些非常错误的内容:

<option value="Ukraine">Ukraine</option>
<option value="United Arab Erimates">United Arab Emirates</option>
<option selected="selected" value="United Kingdom&quot; Selected=&quot;True">United Kingdom</option>
<option value="United States of America">United States of America</option>
<option value="Uraguay">Uruguay</option>

您可以从英国专栏中看到,某些HTML似乎是动态生成的。

预期结果:

    <option selected="selected" value="United Kingdom">United Kingdom</option>

实际结果:

    <option selected="selected" value="United Kingdom&quot; Selected=&quot;True">United Kingdom</option>

这里出了什么问题/坏了/有问题?

1 个答案:

答案 0 :(得分:1)

而不是.SelectedIndex尝试:

    DropDownListCountry.SelectedValue = DropDownListCountry.Items(
DropDownListCountry.Items.FindByText("United Kingdom"))