バリデーション処理 参考サイト
宇宙仮面のC#プログラミング
http://ukamen.hp.infoseek.co.jp/Programming1/Validation/
Multi Web UI アプリケーション開発への道
http://www.microsoft.com/japan/msdn/thisweek/catchupASP/catchupASP4.asp
WebFormにはValidationコントロール があるんだよなぁ
第 3 回 Web アプリケーションの構築
http://www.gotdotnet.com/japan/student/column/dotnetlearning/dotnetlearning3.aspx
原点回帰
なんか思考がまとまらない。こういうときは最初に戻って考えをまとめるのが吉。
そこで登場するのがmyバイブル
Visual Basic6.0+SQL Server7.0ビジネスアプリケーション構築ガイド―n階層アプリケーション開発を実現する構造的アプローチ
- 作者: 田村峰幸
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/03
- メディア: 単行本
- クリック: 20回
- この商品を含むブログ (1件) を見る
私の知る限り*1、設計から実装への落とし込みまでを網羅した唯一の書籍。
業務システムの変遷と未来像から始まって、システム構築に必要な広範な知識を網羅してます。これ一冊で全体像を把握できました。
当時、私は設計手法をいくつか学んで、簡単な設計はできるようになってました。しかしそこから実装へ落とし込む方法がわからず悩んでいました。そんな時出会ったのがこの本。
そのおかげで業務システムの開発ができるようになりました。
形や名前は変わってますが、根本の思想は、今でも十分通用するものです。
この本の中で、SPErrorという独自クラスを使ってますが、これは今でいうところのExceptionクラスみたいなモノです。できれば、この本の.NET版が欲しいんですけどね。全5巻シリーズでも買います(^^;
*1:情けないぐらい狭い範囲ですが(^^;
コントロールに定義されたバインディング情報を取得する方法。
MSDNのBindingの説明(URL)
のサンプルを参考に
private void textBox1_Validating(object sender, CancelEventArgs e) { Control c = (Control)sender; foreach (Binding thisBinding in c.DataBindings) { // Print the control's name and Binding information. Console.WriteLine("\n" + c.ToString()); BindingMemberInfo bInfo = thisBinding.BindingMemberInfo; Console.WriteLine("Binding Path \t" + bInfo.BindingPath); Console.WriteLine("Binding Field \t" + bInfo.BindingField); Console.WriteLine("Binding Member \t" + bInfo.BindingMember); } }
でバインディングしている列の名前が取得できた。
これで、列名を判断して妥当性チェックができる。
(追記)
このやり方は、コントロール毎に設定が必要で面倒なので却下。
ColumnChanging
上記の方法はコントロールごとの設定が必要なので手間がかかる。
大元のDataSetのColumnChangingイベントを使うことで、コントロールがTextBoxかDataViewかを意識することなく処理できる。
DataColumnChangeEventArgsのProposedValueで入力された値をチェックできる。
Column.ColumnNameプロパティで、更新中の列名が取得できる。
DataGrid、DataViewではエラー表示がでるので便利?
DataGridコントロールで変更されたセルを検証するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/099dgchgcell/dgchgcell.html
追記:文章が意味不明なので、後日こちらに詳細をまとめる