Обработка ошибок Vb.Net Datagridview - PullRequest
0 голосов
/ 13 ноября 2009

У меня есть сетка данных, которая, кажется, работает нормально, пока пользователь не добавит имя в столбец уникального имени, который уже существует.

Я получаю это:

System.Data.ConstraintException: столбец «Имя» должен быть уникальным. Значение 'test' уже присутствует.

Кто-нибудь подскажет, где и как я фиксирую эту ошибку и не позволяю пользователям добавлять другое имя без учета регистра, чтобы предотвратить появление этой огромной ошибки?

Спасибо!

Ответы [ 3 ]

1 голос
/ 13 ноября 2009

Просто перехватывайте исключения типа ConstraintException в своем коде (убедитесь, что он находится рядом с местом выполнения вставки). Если это исключение получено, вы выводите какой-то дружественный текст: «Имя« test »уже существует. Пожалуйста, выберите другое имя».

0 голосов
/ 14 ноября 2009

Вы можете просто обработать событие CellValidating и проверить, нет ли элемента с тем же именем. Если он существует, установите e.Cancel на True и установите сообщение об ошибке в этой строке. Пример:

Private Sub dataGridView1_CellValidating(ByVal sender As Object, _
                                         ByVal e As DataGridViewCellValidatingEventArgs) _
                                         Handles dataGridView1.CellValidating

    If ExistsItemWithName(e.FormattedValue.ToString) Then
        e.Cancel = True
        Me.dataGridView1.Rows(e.RowIndex).ErrorText = "An item with this name already exists"
    End If

End Sub

Обратите внимание, что если вы установите ErrorText в CellValidating, вы также должны обработать CellValidating, чтобы вернуть ErrorText в String.Empty.

0 голосов
/ 13 ноября 2009

Просмотрите событие OnSelected вашего источника данных, в частности свойства Exception и ExceptionHandled аргументов события.

...