2009-04-16 9 views
0

GridViewをSqlDataSourceにバインドしてAutoGenerateEditButtonをtrueに設定し、フィールド(このフィールドはデータベースの主キー)を更新しようとすると、データベースはエラーを返し、したがってSqlExceptionをスローする必要がありますか?GridViewが例外を報告しない

なぜページで例外が報告されないのですか?代わりに、すべてのGridviewは、その行のすべてのフィールドを元の値に戻します。


私は次のコードで同じ更新ステートメントを実行すると、私はがID列「社員」例外を更新できませんなったので、私は、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でEmployeeIを試してみましたD」が、例外はまだ

ありがとうを上げていなかった

EDIT:
こんにちは、

早く返信ないため申し訳ありませんが、私は返事を持って気づいていません。

とにかく、何らかの理由でこれが動作しています。つまり、GridViewは例外を報告します。だから私は自分のコードでいくつかの間違いを犯しているに違いないが、私のコードを絶え間なく書き直すことで、間違いがどこにあるのか分からない。あなたの時間を無駄にするために申し訳ありませんが、エラーとあなたのコードを見てみると


答えて

2

私を助けてくれてありがとう。それはSQLデータベースエラーであり、GridViewの問題ではないようです。

データベースエンジンによってSQLが生成されるため、SQLではIDENTITY列の更新が許可されません。この場合、 "EmployeeId"はそのようなフィールドです。

+0

私はこれを言うためにここに来ました+ 1 – Meff

+0

しかし、GridViewと同じ更新ステートメントを実行した上記コードはSqlExceptionを報告しましたが、Gridviewはなぜですか? – SourceC

+1

プロパティ - > EnableModelValidation = "true"を設定しないかぎり、GridViewコントロールは例外を呑み込むように見えます。 –

0

私はオブジェクトデータソースの選択ハンドラで例外をキャッチしましたが、処理済みとして例外を設定するのを忘れました:e.ExceptionHandled = true。エラーが発生していない場合のように、ページにエラーメッセージが表示されずにレンダリングされたページ。 e.ExceptionHandled = trueの場合、すべて正常でした。

関連する問題