2009-04-16 195 views
0

如果我将GridView绑定到SqlDataSource并且将AutoGenerateEditButton设置为true,并且如果我然后尝试更新一个字段(该字段是数据库中的主键),那么数据库应该返回一个错误并且因此应抛出SqlException?GridView不报告异常

那么为什么不报告异常?相反,所有Gridview都会将该行中的所有字段都设置为原始值。


当我执行相同的更新语句,用下面的代码,我无法更新标识列“雇员”例外,所以我假设SQL服务器做了报告同样的错误时的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(); 


BTW - 我试图设置的DataKeyNames =“EmployeeI d”,但是异常仍然没有提出

感谢名单

编辑:
你好,

对不起,不回答越快,但我没有注意到我得到了答复。

无论如何,由于某种原因,它现在正在工作,这意味着GridView会报告一个异常。因此,我一定在代码中犯了一些错误,但由于我的代码不断重写,我不知道该错误在哪里。对不起,浪费你的时间,谢谢你帮我出


回答

2

纵观错误和你的代码。它似乎是一个SQL数据库错误,而不是GridView的问题。

SQL不允许更新IDENTITY列,因为它们是由数据库引擎生成的。在这种情况下,“EmployeeId”就是这样一个领域。

+0

我来这里说这个.. + 1 – Meff 2009-04-16 20:36:05

0

我有同样的问题:我在对象数据源的选择处理程序中发现异常,但忘记将异常设置为处理:e.ExceptionHandled = true。页面上呈现的页面没有我的错误消息,就像没有错误发生一样。随着e.ExceptionHandled = true,一切都很好。