FormView
のページに記事をデータベースに登録できるフォームがあるとします。ユーザーは番号、説明などのプロパティを入力できます。EntityDataSource
を使用します。ASP.NET WebFormsは、実行時に更新処理に挿入操作を変更します
私は挿入/更新操作を実行できます。問題は、いくつかのケースで(正確に同じNumber
のオブジェクトのIsDeleted
プロパティが設定されている場合)、Insert
操作を取り消して、代わりにUpdate
を実行したいとします。そうするために、私はそのようなことを開始しました:
protected void ArticleFormView_ItemInserting(object sender, FormViewInsertEventArgs e)
{
string articleNo = e.Values[ "Number" ].ToString();
// ...some other things...
if (this.ShouldUpdateInsteadOfInsert(articleNo))
{
e.Cancel = true; //cancel insert
this.ArticleFormView.ChangeMode(FormViewMode.Edit);
this.ArticleFormView.UpdateItem(false);
return;
}
}
これが正常Insert
をキャンセルし、Update
を起動します。しかし、ArticleFormView_ItemUpdating
のイベントハンドラのプロパティNewValues
にはFormViewUpdateEventArgs
というオブジェクトがあり、ユーザによって入力されたものではありません。
protected void ArticleFormView_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
// e.NewValues["Number"] - not the same as
// e.Values["Number"] from ArticleFormView_ItemInserting
}
このように動作させる可能性はありますか?
手動でItemInserting
にEntity
オブジェクトを作成し、すべての値を手動で割り当てることができますが、オブジェクトには200以上のフィールドがありますので、私はより良いアプローチを探しています。
私はこの場合に良い解決策をお見逃しなく。