绑定下拉列表文本设置没有例外

时间:2018-05-22 16:24:59

标签: c# asp.net webforms

以下不会产生错误,因此我无法测试成功与否。 Visual Studio的设置可能吗?

try
{
    dt = new DataTable();
    dt.Columns.Add("Cnt");
    for (int i = 1; i <= 10; i++)
    {
        dt.Rows.Add(i);
    }
    DrpLevel.DataTextField = "Cnt";
    DrpLevel.DataValueField = "Cnt";
    DrpLevel.DataSource = dt;
    DrpLevel.DataBind();
    DrpLevel.Text = "777";  //Should cause error!!
}
catch (Exception e)
{
    Console.WriteLine("{0} Exception caught.", e);
}

1 个答案:

答案 0 :(得分:0)

如果在Page.IsPostBack属性为false时运行该代码,则不会出现异常。这也在SelectedValue的MSDN documentation中解释(Text属性只调用SelectedValue来获取/设置)

  

当所选值不在可用值列表中时,a   执行回发,ArgumentOutOfRangeException异常   抛出。

如果我们查看source code of SelectedValue,我们可以看到此检查

bool loaded = Page != null && Page.IsPostBack && _stateLoaded;
if (loaded && selectItem == null) {
    throw new ArgumentOutOfRangeException("value", SR.GetString(SR.ListControl_SelectionOutOfRange, ID, "SelectedValue"));
}

因此,当IsPostBack为false或控件尚未加载ViewState时,我们不会得到任何异常。