Нет исключений с настройками связанного выпадающего списка - PullRequest
0 голосов
/ 22 мая 2018

Следующее не генерирует ошибку, поэтому я не могу проверить успех или неудачу.Возможно, настройка 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 голосов
/ 22 мая 2018

Если вы запускаете этот код, когда свойство Page.IsPostBack имеет значение false, исключение не выдается.Это также объясняется в документации MSDN для SelectedValue (свойство Text просто вызывает SelectedValue для получения / установки)

Когда выбранное значение отсутствует в списке доступных значений ивыполняется обратная передача, генерируется исключение ArgumentOutOfRangeException.

Если мы посмотрим на исходный код 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, мы не получаем никаких исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...