2011-02-17 13 views
0

ObjectDataSourceに接続されているMyページにGridViewコントロールがあります.TypeName = "BLL.MyLogic" DataObjectTypeName = "BLL.MyObject" UpdateMethod = "MyUpdateMethod"です。ASP.NET ObjectDataSource UpdateMethod例外処理

MyUpdateMethodの更新は、_datacontext.submitchanges()の前の条件を確認する条件です。私のチェックに応じて、私は( "not unique")または( "notropropiate logic found"など)例外などをスローします。これらの例外は、ObjectDataSourceのOnUpdated = "MyDataUpdated"を介してページレベルで取得しています。

これらの操作は正常に動作します。プロセスが完了した後に問題が発生し、例外が発生した場合でもGridViewがリロードされ、editindex = -1(開始)になります。手動でeditindexを取得して編集可能にしても、edittemplateのフォームデータ(ユーザーによって入力されたデータ)が破棄されます。 ViewStateはここでは機能しません。

この状況にはどのような回避策がありますか?

ありがとうございます。

+0

コードを投稿してください。 – TheGeekYouNeed

答えて

0

RowUpdatedイベントハンドラでGridViewUpdatedEventArgs.KeepInEditMode propertyをtrueに設定しようとしましたか?

+0

あなたの返事をありがとう。 KeepInEditModeは、objectdatasourceではなくGridViewに関連しています。 Challangeはそれを編集モードに保つことではありませんでした。 Challangeは入力データとともに編集モードにしておくことです。言い換えれば、検証が失敗したように振る舞います。 私の場合、私はそれをeditmodeに保持していますが、objectdatasourceのSelectMethodが更新直後に呼び出されているため、グリッドビューがリロードされ、編集テンプレート内の入力コントロールのviewstateデータが失われています。 –

+0

これを入れてみましたか?私は間違っている可能性がありますが、リフレクターに表示されているものから、これをtrueに設定すると、gridviewが再度データバインドされないように見えます。おそらくe.ExceptionHandledもtrueに設定したいと思うでしょう。 – patmortech