バリデーション処理 参考サイト

宇宙仮面の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バイブル

私の知る限り*1、設計から実装への落とし込みまでを網羅した唯一の書籍。
業務システムの変遷と未来像から始まって、システム構築に必要な広範な知識を網羅してます。これ一冊で全体像を把握できました。
当時、私は設計手法をいくつか学んで、簡単な設計はできるようになってました。しかしそこから実装へ落とし込む方法がわからず悩んでいました。そんな時出会ったのがこの本。
そのおかげで業務システムの開発ができるようになりました。

形や名前は変わってますが、根本の思想は、今でも十分通用するものです。
この本の中で、SPErrorという独自クラスを使ってますが、これは今でいうところのExceptionクラスみたいなモノです。できれば、この本の.NET版が欲しいんですけどね。全5巻シリーズでも買います(^^;

*1:情けないぐらい狭い範囲ですが(^^;

あてが外れた。

散々持ち上げといてなんですが、使えそうな情報は載ってませんでした(汗

関連がありそうなのは、妥当性チェックではエラーと警告が必要で、警告では確認を求める(特権者の承認が必要、警告にランクを与えて対応を分類など)処理が必要。確認後、処理を継続するか、中断するかの選択をユーザーができるようにする。
データの入力では入力直後に妥当性チェックが必要。Validationを使え。
ってとこぐらい(^^;

あとは自力で考えるしかないようです。

続きを読む

コントロールに定義されたバインディング情報を取得する方法。

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

追記:文章が意味不明なので、後日こちらに詳細をまとめる