如果我将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属性是否设置正确?
我尝试设置DataKeyNames =“EmployeeId”,但仍然没有引发异常
答案 0 :(得分:2)
如果您的SQL查询返回结果,那么C#将获得该结果。如果您的SQL查询抛出异常,那么C#将获得该异常。你不能在这里混搭,它不是衣橱。
答案 1 :(得分:2)
仅当T-SQL中的ERROR严重性为16或更高AFAIK时,才会抛出异常。因此,并非SQL Server中的所有错误都相同。
答案 2 :(得分:2)
您实际上应该能够无错误地修改主键,只要它不会导致重复。
答案 3 :(得分:1)
您的DataKeyNames property设置正确吗?