電子書籍の厳選無料作品が豊富!

お世話になります。

フォームビュー上にある DropDownList の選択で、Windowsフォームのような BeforeUpDate イベントがないと思うのですが、

フォームビューであれば、FormViewUpdateEventArgs Cancel = True で更新をキャンセルできるとの事ですが、 DropDownList での BeforeUpDate のような操作はできないのでしょうか?
もしくはまったく違う考えで これらを実現するのでしょうか?

簡単な例で教えていただけないでしょうか?

よろしくお願い申し上げます。

A 回答 (2件)

> フォームビュー上にある 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.w …

SqlDataSource.Updating イベント
http://msdn.microsoft.com/ja-jp/library/system.w …

ObjectDataSource.Updating イベント
http://msdn.microsoft.com/ja-jp/library/system.w …
    • good
    • 0
この回答へのお礼

WebSurferさん 大変お世話になっております。

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

お礼日時:2012/09/26 08:42

難しい話題ですね。


Web ControlのDropDownListには、ItemDataBound(=DataBindの過去分詞形)しかないので、たしかに「データバインドが起きた後」という意味合いしかありません。
(最後にHTMLレンダリングされるまでカタチにならないので、別に前でも後でもいいのですが)
これも、ASP.NETだけの概念で、一般的なWebアプリケーション・フレームワークには、「データバインドがイベントになる」という考え方すらありません。

で、標準のDropDownListではなく、ComponentOneのようなASP.NET用市販コンポーネントには、そのものズバリ「ComboBindingントロール」などがあって、DataBoundとDataBinding両方のイベントがあります。
Infragisticsなんかも同じだったように思います。

DataBoundイベントの場合は、不都合データをそのままバインドすると例外が出るため、バインド前に被バインドデータを加工するしかありませんが、DtaBindingイベントであればその時点で「応急的に」処置できるので、ロジックがすっきりするような感じかな?


WindowsFormsやAccessVBA資産(人やスキルも含む)をASP.NETなどに移行したい場合は、こういう市販コントロールを使った開発スタイルも大きい需要があるみたいですよ。
    • good
    • 0
この回答へのお礼

shockatzさん 大変お世話になっております。

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

お礼日時:2012/09/26 08:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!