asp.net下拉列表在数据绑定后不接受文本

时间:2015-04-15 10:34:36

标签: c# asp.net

我的页面中有两个dorpdownlists。一个是数据绑定,另一个是在设计时添加的值。

<asp:DropDownList ID="maritalStatus" runat="server" Width="180px">
        <asp:ListItem Value="-1">--SELECT--</asp:ListItem>
        <asp:ListItem>Single</asp:ListItem>
        <asp:ListItem>Divorced</asp:ListItem>
        <asp:ListItem>Married</asp:ListItem>
        <asp:ListItem>Widow(er)</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="country" runat="server" Width="180px">
</asp:DropDownList>

这是我填写国家/地区的Codebehind dropDownList

using (SqlCommand com = new SqlCommand("SELECT CountryID,  CountryName FROM Country", con))
{
      SqlDataAdapter dad = new SqlDataAdapter(com);
      DataTable countryTab = new DataTable("Country");
      dad.Fill(countryTab);
      country.DataSource = countryTab;
      country.DataTextField = "CountryName";
      country.DataValueField = "CountryID";
      country.DataBind();
      country.Items.Insert(0, new ListItem("--SELECT--", "-1"));

}

但是当我设置&#34; - SELECT - &#34;对于两个dropDownLists,maritalStatus dropDownList工作正常;但是,国家/地区下拉列表显示此错误

  

&#34;&#39;国家&#39;有一个SelectedValue,它是无效的,因为它没有   存在于项目列表中#34;

maritalStatus.Text = "--SELECT--";
country.Text = "--SELECT--";

如果我将国家/地区文本设置为&#34; -1&#34;,它将正常工作。我不明白为什么dropDownLists都以不同的方式表现。

3 个答案:

答案 0 :(得分:3)

您的问题是您的下拉列表中没有--SELECT--之类的值,因此它们与ListItem集合中的不匹配,因此也是例外。

根据Dropdownlist Text属性的文档: -

  

获取或设置ListControl控件的SelectedValue属性。

因此,当您说country.Text = "--SELECT--";时,它正在搜索集合中不存在的--SELECT--值,但是当您搜索-1时,它会找到它并且存在没有例外。

在两个下拉列表中出现行为差异,无论是否绑定它都无关紧要programmaticallydeclaratively两者的行为都相同,在这两种情况下都会得到异常。< / p>

答案 1 :(得分:1)

只需替换

country.Items.Insert(0, new ListItem("--SELECT--", "-1"));

country.Items.Insert("0","--SELECT--");

这将解决问题

答案 2 :(得分:0)

只需替换

country.Items.Insert(0, new ListItem("--SELECT--", "-1"));

country.Items.Insert(0, new ListItem("--SELECT--", "0"));