我的问题非常简单,我找到了很多例子,但它们并不简明扼要。
下面的是我的aspx文件中的标记
<asp:DropDownList ID="ddlCountry" DataTextField="CountryName" DataValueField="CountryCode" runat="server">
</asp:DropDownList>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
以下是我背后的代码
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LoadCountry();
this.ddlCountry.SelectedValue = "USA";
}
}
private void LoadCountry()
{
DataTable dtResult = null;
dtResult = new DataTable("Countiers");
dtResult.Columns.Add("CountryCode");
dtResult.Columns.Add("CountryName");
DataRow dtRow1 = dtResult.NewRow();
dtRow1["CountryCode"] = "PAKISTAN";
dtRow1["CountryName"] = "PAKISTAN";
dtResult.Rows.Add(dtRow1);
DataRow dtRow2 = dtResult.NewRow();
dtRow2["CountryCode"] = "INDIA";
dtRow2["CountryName"] = "INDIA";
dtResult.Rows.Add(dtRow2);
DataView dv = new DataView(dtResult);
dv.Sort = "CountryName";
this.ddlCountry.DataSource = dv;
this.ddlCountry.DataBind();
this.ddlCountry.Items.Insert(0, new ListItem("--Please Select--", "-1"));
}
protected void Button1_Click(object sender, EventArgs e)
{
this.ddlCountry.SelectedValue = "USA";
}
}
我只是在国家/地区加载此下拉列表,在调用LoadCountry方法后的初始页面加载事件中,我将selectedValue设置为&#34; USA&#34;没有例外或错误。但是在通过单击Button1回发后,我再次将selectedValue设置为&#34; USA&#34;但是这次发生了异常(具有一个无效的SelectedValue,因为它在项目列表中不存在)。我理解价值&#34; USA&#34;是不是在列表中,为什么它抛出异常,但为什么它最初没有抛出异常?
答案 0 :(得分:0)
这是一种记录在案的行为,但我实际上并不知道其原因:
当所选值不在可用值列表中并且执行回发时,将抛出ArgumentOutOfRangeException异常。