- ベストアンサー
ASP.Net FormViewにおけるデータ削除について
- ASP.NetのFormViewでデータ削除を行う際に、削除後にページを閉じることができない問題が発生しています。
- 削除処理は正常に実行され、セッションもクリアされますが、ページが閉じられず、LoadイベントやDataBoundイベントに移行してしまいます。
- 解決策として、削除処理の後にJavaScriptを使用してページを閉じるようにすることができます。具体的には、Response.Writeメソッドを使用してJavaScriptのコードを実行します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> FormView1.DeleteItem() > をEdit モードで実行した場合、その後はどのような処理になるんでしょうか? > キーとなるデータは削除された場合は、New の新規モードになるんでしょうか? > それとも空のEditモードの画面が表示されるんでしょうか? 書いているプログラムにしたがったものになるでしょう。 FormViewのデフォルトのモードが何になっているか(指定していなければ表示モードだっけかな)、 FormViewに表示するデータをどのように設定しているか、によって変わってくると思います。 > 一般的に、削除処理を行った後というのは、どういう画面を出すのが一般的でしょうか? 仕様によりますよね。 自分で決定できる場合だと、たいていは「一覧表示」->「詳細表示」->「削除」みたいな ながれになるので、削除後は一覧表示にもどす、とかします。
その他の回答 (2)
- onos
- ベストアンサー率81% (127/155)
> 上記を記述した後、自身を閉じるにはどうしたらよいでしょうか? このような操作(ボタンクリックによりサーバーにリクエストなげて、直後に スクリプトを利用してウィンドウを閉じる)を行うこと自体がブラウザの セキュリティ制限でできなくなっている部分です。 それをふまえて仕様を見直したほうがよい、というのが私からのアドバイスになります。
補足
onosさん 大変お世話になっております。 仕様を見直そうかと思っております。 最後に質問させていただきたいのですが、 FormView1.DeleteItem() をEdit モードで実行した場合、その後はどのような処理になるんでしょうか? キーとなるデータは削除された場合は、New の新規モードになるんでしょうか?それとも空のEditモードの画面が表示されるんでしょうか? 一般的に、削除処理を行った後というのは、どういう画面を出すのが一般的でしょうか? すみません 何卒よろしくお願い申し上げます。
- onos
- ベストアンサー率81% (127/155)
Response.Write というメソッドは、ブラウザに送信するためのストリームに データを書き込むだけで、そのデータを実際にブラウザに送信したりはしません。 なので、これしか記述していない場合は正常な動作をしていると思います。 Response.End()をResponse.Writeの下に記述することでブラウザにたいして HTMLの送信が行われると思います。 ただ、この状態だとブラウザのセキュリティの制限にひっかかるはず。 いきなりスクリプトで画面を閉じることはできないようになってると思います。 仕様をHTMLの制限にあわせて考え直したほうがいいような。。。
補足
onosさん 大変お世話になっております。 HTMLの制限ですが・・・ ちなみに、ボタンクリックイベントに FormView1.DeleteItem() Session("Number") = "" 上記を記述した後、自身を閉じるにはどうしたらよいでしょうか? ちなみに、ボタンイベントを使用せずに、CommandName に Delete を設定しても、データは削除されるのですが、その画面のLoad、DataBound イベントに行ってしまいます。 逆にこれらのイベントで 画面を閉じるように直した方がいいでしょうか? アドバイスいただけますと大変助かります。 よろしくお願いいたします。
お礼
onosさん お世話になっております。 細かい部分までのアドバイスありがとうございました。 ご指摘通りの 一覧表示→詳細表示→削除 の処理を行っております。 削除後は、一覧に戻したいのです。 というわけで、 FormView1.DeleteItem() の後に、自分を閉じるを行たかったのですが・・・ 指定モードに戻るみたいですので、そちらで削除フラグを作成して 閉じるようにいたしました。 ご面倒をおかけいたしました。 ありがとうございました。