如果我将GridView绑定到SqlDataSource并将AutoGenerateEditButton设置为true,如果我然后尝试更新字段(此字段是数据库中的主键),那么数据库应该返回错误,因此应该抛出SqlException?!
那么为什么页面报告异常呢?相反,所有Gridview都会将该行中的所有字段设置回原始值。
当我使用以下代码执行相同的更新语句时,我得到无法更新标识列'EmployeeID'异常,所以我假设当GridView尝试更新时,Sql Server确实报告了相同的错误,但是由于某种原因,没有提出异常:
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”,但仍未提出异常
thanx
编辑:
您好,
很抱歉没有尽快回复,但我没有注意到我收到了回复。
无论如何,由于某种原因,它现在正在运行,这意味着GridView会报告异常。因此,我必须在我的代码中犯了一些错误,但由于我的代码不断重写,我不知道这个错误会在哪里。很抱歉浪费你的时间,谢谢你帮助我
答案 0 :(得分:2)
查看错误和您的代码。它似乎是一个SQL数据库错误,而不是GridView的问题。
SQL不允许更新IDENTITY列,因为它们是由数据库引擎生成的。在这种情况下,“EmployeeId”就是这样一个领域。
答案 1 :(得分:0)
我遇到了同样的问题:我在对象数据源的选择处理程序中捕获了异常,但忘记将异常设置为已处理:e.ExceptionHandled = true。页面上没有我的错误消息呈现的页面,就像没有发生错误一样。 e.ExceptionHandled = true,一切都很好。