• ベストアンサー

ASP.Net BeforeUpDate のように

お世話になります。 フォームビュー上にある DropDownList の選択で、Windowsフォームのような BeforeUpDate イベントがないと思うのですが、 フォームビューであれば、FormViewUpdateEventArgs Cancel = True で更新をキャンセルできるとの事ですが、 DropDownList での BeforeUpDate のような操作はできないのでしょうか? もしくはまったく違う考えで これらを実現するのでしょうか? 簡単な例で教えていただけないでしょうか? よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • WebSurfer
  • ベストアンサー率55% (33/59)
回答No.1

> フォームビュー上にある DropDownList の選択で、Windowsフォームのよう > な BeforeUpDate イベントがないと思うのですが、 BeforeUpDate というのは Office VBA のイベントのことだと思いますが、そういうのは ASP.NET にはありません。 全体のシナリオが分かりませんが、フォームビューというのは ASP.NET の FormView で、それに DropDownList を配置して、その AutoPostBack プロパティを ture に設定し、ユーザーが DropDownList の選択を変更したときにポストバックして、DB を UPDATE するというような操作をしているのでしょうか? であれば、質問に書いてあるように「FormViewUpdateEventArgs Cancel = True で更新をキャンセル」するか、FormView に SqlDataSource のようなデータソースコントロールを組み合わせて使っていれば、その Updating イベントのハンドラで同様のことをしてキャンセルするのが普通です。 FormView.ItemUpdating イベント http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.formview.itemupdating(v=vs.100).aspx SqlDataSource.Updating イベント http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.sqldatasource.updating(v=vs.100).aspx ObjectDataSource.Updating イベント http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.objectdatasource.updating(v=vs.100).aspx

kyokotan12
質問者

お礼

WebSurferさん 大変お世話になっております。 WebSurferさんのご推察どおり、FormViewにropDownLisを配置してAutoPostBackをTrueを設定した上での質問でした。 ただ、問題なのは、FormViewUpdateEventArgs Cancel = True にしても、データソースコントロールのUpdating にしても、全体的な更新をする時に初めて、入力された値がわかり処理ができるので、タイミング的には遅い感じになってしまい、使えないのかなーと思っておりました。 データが連結されているコントロールと非連結のコントロールを使い、ワンクッション置く方法なども考慮に入れ開発したいと思っております。ですが、ご提示いただいたURLはとても今後の参考になりました。ありがとうございました。

その他の回答 (1)

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.2

難しい話題ですね。 Web ControlのDropDownListには、ItemDataBound(=DataBindの過去分詞形)しかないので、たしかに「データバインドが起きた後」という意味合いしかありません。 (最後にHTMLレンダリングされるまでカタチにならないので、別に前でも後でもいいのですが) これも、ASP.NETだけの概念で、一般的なWebアプリケーション・フレームワークには、「データバインドがイベントになる」という考え方すらありません。 で、標準のDropDownListではなく、ComponentOneのようなASP.NET用市販コンポーネントには、そのものズバリ「ComboBindingントロール」などがあって、DataBoundとDataBinding両方のイベントがあります。 Infragisticsなんかも同じだったように思います。 DataBoundイベントの場合は、不都合データをそのままバインドすると例外が出るため、バインド前に被バインドデータを加工するしかありませんが、DtaBindingイベントであればその時点で「応急的に」処置できるので、ロジックがすっきりするような感じかな? WindowsFormsやAccessVBA資産(人やスキルも含む)をASP.NETなどに移行したい場合は、こういう市販コントロールを使った開発スタイルも大きい需要があるみたいですよ。

kyokotan12
質問者

お礼

shockatzさん 大変お世話になっております。 Accessで作成してあるシステムをASP.Net へ移行している作業をしております。 なるほど BeforeUpDate の概念がないのですね!そういう場合に市販のコントロールを使用して このような場合に備えるのも一般的なんですね!大変参考になりました。ありがとうございました。

関連するQ&A