
お世話になります。
フォームビュー上にある DropDownList の選択で、Windowsフォームのような BeforeUpDate イベントがないと思うのですが、
フォームビューであれば、FormViewUpdateEventArgs Cancel = True で更新をキャンセルできるとの事ですが、 DropDownList での BeforeUpDate のような操作はできないのでしょうか?
もしくはまったく違う考えで これらを実現するのでしょうか?
簡単な例で教えていただけないでしょうか?
よろしくお願い申し上げます。
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.w …
SqlDataSource.Updating イベント
http://msdn.microsoft.com/ja-jp/library/system.w …
ObjectDataSource.Updating イベント
http://msdn.microsoft.com/ja-jp/library/system.w …
WebSurferさん 大変お世話になっております。
WebSurferさんのご推察どおり、FormViewにropDownLisを配置してAutoPostBackをTrueを設定した上での質問でした。
ただ、問題なのは、FormViewUpdateEventArgs Cancel = True にしても、データソースコントロールのUpdating にしても、全体的な更新をする時に初めて、入力された値がわかり処理ができるので、タイミング的には遅い感じになってしまい、使えないのかなーと思っておりました。 データが連結されているコントロールと非連結のコントロールを使い、ワンクッション置く方法なども考慮に入れ開発したいと思っております。ですが、ご提示いただいたURLはとても今後の参考になりました。ありがとうございました。
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などに移行したい場合は、こういう市販コントロールを使った開発スタイルも大きい需要があるみたいですよ。
shockatzさん 大変お世話になっております。
Accessで作成してあるシステムをASP.Net へ移行している作業をしております。
なるほど BeforeUpDate の概念がないのですね!そういう場合に市販のコントロールを使用して このような場合に備えるのも一般的なんですね!大変参考になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
コンボボックスにキー入力をさ...
-
KEYPREVIEW=TRUEについて。意味...
-
特定のキーを押すまでループさ...
-
タブキー押下時のイベントをひ...
-
Visual Basic 6.0 コンボボック...
-
(VBA)チェックボックスのclick...
-
VB.NETでフォームがない...
-
Excel VBA マクロ実行中のみテンキ...
-
VB6で電卓を作っているのですが...
-
VB.NETのDropDownListをReadOnl...
-
コンボボックス選択後に非アク...
-
VB IEブラウザへのキーイベント...
-
コントロールキーが押されたキ...
-
キーイベントを擬似的に発生さ...
-
一定時間操作されないと自動で...
-
NULLで検索を行ったときは全件...
-
コマンドボタン(入力)をクリッ...
-
フォーカスについてお教えください
-
矢印キーイベントの封印。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
タブキー押下時のイベントをひ...
-
Visual Basic 6.0 コンボボック...
-
Access データ表示 完了時のイ...
-
VB.NETのDropDownListをReadOnl...
-
KEYPREVIEW=TRUEについて。意味...
-
テキストボックスの入力文字を1...
-
(VBA)チェックボックスのclick...
-
Excel VBA マクロ実行中のみテンキ...
-
特定のキーを押すまでループさ...
-
VB.NETでフォームがない...
-
コンボボックスにキー入力をさ...
-
キーイベントを擬似的に発生さ...
-
IEで、BackSpaceで「戻る」機能...
-
フォーカスについてお教えください
-
VB6で電卓を作っているのですが...
-
VB IEブラウザへのキーイベント...
-
一定時間操作されないと自動で...
-
GetKeyStateについて
-
WPFでの時刻入力コントロールに...
おすすめ情報