我的页面中有两个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都以不同的方式表现。
答案 0 :(得分:3)
您的问题是您的下拉列表中没有--SELECT--
之类的值,因此它们与ListItem
集合中的不匹配,因此也是例外。
根据Dropdownlist Text属性的文档: -
获取或设置ListControl控件的SelectedValue属性。
因此,当您说country.Text = "--SELECT--";
时,它正在搜索集合中不存在的--SELECT--
值,但是当您搜索-1
时,它会找到它并且存在没有例外。
在两个下拉列表中出现行为差异,无论是否绑定它都无关紧要programmatically
或declaratively
两者的行为都相同,在这两种情况下都会得到异常。< / 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"));