Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Где поймать NoNullAllowedException? / 4 сообщений из 4, страница 1 из 1
18.06.2007, 15:26
    #34602241
Senja
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где поймать NoNullAllowedException?
Имеется форма, в ней DataSet и BindingSource, к нему привязано несколько текстбоксов.
При изменении текущей строки в таблице происходит проверка ограничений, указанных в датасете - макс длина поля, внешний ключ, запрещены null и т.д. возникают соответствующие исключения. Например при попытке вставить значение null в столбец, в котором они запрещены, вылетает NoNullAllowedException. Возникает вопрос: его можно как-нибудь обработать? Где это нужно делать?

Хочется запретить менять текущую строку, а пользователю выдать сообщение, или показать ошибку с помощью ErrorProvider.

Если к BindingSource привязан DataGridView, в нем вызывается событие DataError и в нем можно сделать все необходимое. А что делать если DataGridView нет?
...
Рейтинг: 0 / 0
18.06.2007, 15:37
    #34602285
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где поймать NoNullAllowedException?
некогда проверять, посмотри что отлавливает BindingSource.DataError
...
Рейтинг: 0 / 0
18.06.2007, 16:10
    #34602413
Senja
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где поймать NoNullAllowedException?
А можно по-подробнее?

Как оказалось, DataGridView вызывает DataError только если изменение текущей строки вызвано самим DataGridView. Если с тем же BindingSource связан еще и BindingNavigator, и я нажимаю кнопку в нем, то обработчик не вызывается.
Скорее всего в недрах DataGridView присутствует что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
try
{
  this.BindingSource.Position = номер новой строки;
}
catch (System.Data.DataException ex)
{
  DataError(this, ... )
}
Это не совсем то, что нужно.

Судя по msdn необходимо написать обработчик DataSource.BindingComplete, но это событие почему-то не вызывается при возникновении исключения.
...
Рейтинг: 0 / 0
19.06.2007, 01:18
    #34603354
Senja
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где поймать NoNullAllowedException?
Если кому-то интересно - нашел решение .

Как видно нормального способа нет :( Предлагается наследовать от BindingSource :( :( :(
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Где поймать NoNullAllowedException? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]