Настройка ASP.NET SelectedValue, который не принадлежит списку, не вызывает исключение - PullRequest
2 голосов
/ 25 января 2010

У меня есть форма ASP.Net, где я использую элемент управления DropDownList для отображения данных, извлеченных из таблицы. Однако установка значения SelectedValue DropDownList на значение, отсутствующее в раскрывающемся списке, не вызывает исключение.

Try
    dropDownList.SelectedValue = value
Catch ex as Exception
    Throw
End Try

В приведенном выше коде, если я присваиваю значение, которое не принадлежит элементу списка, оно не выдает исключение. Он просто выбирает первый элемент в списке при визуализации HTML.

Есть идеи почему?

Кстати, у меня есть пустой (String.Empty) элемент в качестве первого элемента в списке. Я также использовал DataBind () для привязки listItem к DataTable. Имеет ли это какое-то значение?

Ответы [ 3 ]

8 голосов
/ 28 января 2010

Спасибо, ребята, что ответили. В конечном итоге я использовал метод FindByValue () выпадающего списка и проверил, существует ли значение в списке:

If Not DropDownlist.Items.FindByValue(value) Is Nothing Then
    ' do what the Exception is supposed to do '
Else
    DropDownList.SelectedValue = value
End If

FindByValue () ничего не возвращает, если переданный параметр не принадлежит списку. Я старался не использовать Исключение (которое тяжело обрабатывает) для решения проблемы, и оно работает именно так, как мне нужно.

4 голосов
/ 25 января 2010

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

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selectedvalue.aspx

0 голосов
/ 23 июля 2014

Я думаю, что НЕ следует удалять. В противном случае все наоборот. Это то, что я сделал.

If ddAssignedDTL.Items.FindByValue(sqlreader("C_AssignedDTL").ToString) Is Nothing Then

 ' do what the Exception is supposed to do '
 ddAssignedDTL.Items.Add(New ListItem("<Invalid DTL-" & sqlreader("C_AssignedDTL").ToString & ">", sqlreader("C_AssignedDTL").ToString))
 ddAssignedDTL.SelectedValue = sqlreader("C_AssignedDTL").ToString
 DTL = sqlreader("C_AssignedDTL").ToString
 ddAssignedDTL.BackColor = Drawing.Color.Red
Else
 ddAssignedDTL.SelectedValue = sqlreader("C_AssignedDTL").ToString
 DTL = sqlreader("C_AssignedDTL").ToString()
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...