2009-04-16 207 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,一切都很好。