GridView не сообщает об исключении - PullRequest
0 голосов
/ 17 апреля 2009

Если я связываю GridView с SqlDataSource, а также устанавливаю для AutoGenerateEditButton значение true, и если я затем пытаюсь обновить поле (это поле является первичным ключом в базе данных), то база данных должна вернуть ошибку, и, таким образом, следует выдать SqlException ?!

Так почему страница не сообщает об исключении? Вместо этого все, что делает Gridview, - это возвращает все поля в этой строке к их исходным значениям.


Когда я выполнил тот же оператор обновления со следующим кодом, я получил Невозможно обновить исключение столбца идентификатора «EmployeeID» , поэтому я предполагаю, что Sql Server сообщал об этой же ошибке при попытке обновления GridView, но для исключение по какой-то причине не возникло:

        SqlConnection sc = new SqlConnection();
        sc.ConnectionString = @"Data source=localhost; integrated security=sspi; initial catalog=northwind;";
        SqlCommand sComand = new SqlCommand();

        sComand.Connection = sc;
        sComand.CommandText = "update Employees set EmployeeId=100,FirstName='Suzy',"+ 
                   "LastName='Smile',City='Moon' where EmployeeId=1";
        sc.Open();
        int I = sComand.ExecuteNonQuery();


Кстати, я пытался установить DataKeyNames = "EmployeeId", но исключение все равно не было вызвано

спасибо

EDIT:
Здравствуйте,

Извините, что не отвечал раньше, но я не заметил, что получил ответ.

В любом случае, по какой-то причине он работает сейчас, что означает, что GridView действительно сообщает об исключении. Таким образом, я, должно быть, допустил некоторую ошибку в своем коде, но из-за постоянного переписывания моего кода я понятия не имею, где будет эта ошибка. Извините, что потратили ваше время, и спасибо, что помогли мне


Ответы [ 2 ]

2 голосов
/ 17 апреля 2009

Глядя на ошибку и ваш код. Кажется, это ошибка базы данных SQL, а не проблема с GridView.

SQL не допускает обновления столбцов IDENTITY, поскольку они генерируются ядром базы данных. В этом случае «EmployeeId» является таким полем.

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

У меня такая же проблема: я поймал исключение в обработчике выбора источника данных объекта, но забыл установить исключение как обработанное: e.ExceptionHandled = true. Страница отображается без моего сообщения об ошибке на странице, как если бы не было ошибки. С e.ExceptionHandled = true все было хорошо.

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