インフラジスティックス・ジャパン株式会社Blogインフラジスティックス・ジャパン株式会社Blogインフラジスティックス・ジャパン株式会社のチームメンバーが技術トレンド、製品Tips、サポート情報からライセンス、日々の業務から感じることなど、さまざまなトピックについてお伝えするBlogです。おけるバリデーション方法をご紹介します。バリデーションというのは、要するに入力項目の審査のことですね。単純な最大値や最大桁数や禁則文字のチェックであったり、別の項目がAの時はBしか入力できないなどといった相関チェックであったり、同じ値を登録させないような重複チェックであったり・・・とにかくアプリケーションとしてユーザに登録させたくないデータが入力されたときに、それは登録できないんだよ、と伝える仕組みのことです。各セルに対する入力チェックのかけ方をいくつかご紹介します。プロパティ設定による入力制限まず、プロパティで設定できる基本的な入力制限を紹介します。WinGridの各列のバインド列はデータソースの対応するカラムのタイプに応じて自動的に適切な(数値型や文字型や日付型など)データタイプが設定され、例えば数値項目であれば数字と小数点以外入力できなかったり、日付項目であれば実在する日付しか入力できなくなったりと、データタイプに応じて自動的に入力制限がかかります。(もちろん、設定次第では解除することも他の入力制限をかけることもできます。)これは、バインドした項目のデータタイプに応じてセル編集時に利用されるエディターが、数値編集用であったり日付編集用のものに自動的に変わるためです。この編集時に利用されるエディターに対してマスク処理などを施すこともできますが、以下のコードのように各列毎に設定できるプロパティを利用することで簡単に入力制限をかけられるものもあります。設定と、正規表現を使った入力制限をかけています。この正規表現を使った方法で入力制限をかけると、以下のように入力自体はできるもののエラーメッセージがダイアログ表示されフォーカスアウトできないというような挙動となります。イベントをハンドルすることでフォーカスをとどめるかどうかや、元の値に戻すかどうかなど細かい制御を加えることができます。イベントハンドリングによる入力制御セル編集時のイベントハンドリングによるバリデーションは大きく分けて2パターン考えられます。1つ目はセル編集が終わりフォーカスを抜けようとする際にチェックを行い、エラーであった場合はその場でダイアログ表示を行い、エラーを修正するまでは編集状態を抜けられないようにする。2つ目はセル編集を抜けて(内部的に)セルの値をコミットしにいくタイミングでチェックし、エラーであった場合その旨をユーザへ通知し、(場合によっては値を元の正常な値に戻して)フォーカスを抜けるというものです。どちらも一長一短で、前者はエラーであった場合でもフォーカスが留まるのでその場ですぐに修正する場合は使いやすいのですが、エラー値でもいいからフォーカスを抜けたいときに抜けられない、スピード重視の連続入力が行ないえないというデメリットがあります。多くの方が経験されたことがあるかと思いますが、入力エラーでフォーカスが抜けられないがために画面を閉じることすら許されないという悲惨な状況を生みかねないため、個人的には後者のほうが良いと思っています。(後者の場合はどのようにユーザにエラーを伝えるかがポイントですね!)それぞれ実装方法をチェックいていきます。含んでいるため入力できません。含んでいるため入力できません。}後者の場合、「e.Cancel=true;」により値をロールバックさせていますが、場合によっては苦労して入力したデータがロールバックで消えてしまうことでユーザへ大変なストレスを与える事もあります。各セルの入力エラーごとにダイアログを出力しているとスピード重視で連続セル入力を行っている場合は、こちらも大変なストレスになります。利用してセルにエラー表示する方法をご紹介します。使ったエラー表示まず、DataErrorInfoをセル単位または行単位とセル単位で有効に設定します。DataErrorInfoを利用する。イベントでダイアログ表示していた箇所を以下のように変更します。含んでいるため入力できません。含んでいるため入力できません。メソッドでセルに対してエラー情報を貼り付けています。忘れてはいけないのがエラーの解除で、エラーではなかった場合にエラー情報をクリアしてあげないと正常値を入力いてもいつまでたってもエラー表示が残ってしまいます。入力エラーのセルが一目瞭然ですね。!マークのところにマウスカーソルを合わせると上図のようにチップテキストとして設定したエラーメッセージが表示されます。Webの入力フォームで入力エラーだった場合に項目の右隣か下に赤文字でエラーメッセージが表示されるものをよく見かけますが、これならスムーズに入力を続けられますね。続いてエラーセルをより分かりやすくするためにエラーセルの外観を変更してみます。入力エラーのあるセルの所在がかなり見やすくなりましたね。最後に、確定ボタン押した時のチェックについてです。利用している場合は、以下のように書くだけで入力したタイミングで行っていたチェック結果を利用してエラー有無を確認することができます。以下のコードでは、先頭のエラー情報を拾ってダイアログ表示を行っています。使って実装するとどんな感じになるのかという紹介をさせていただきました。使ったバリデーションはユーザにも喜ばれるしコード量も減らせるとても良いものなので、使ったことないという方がいらっしゃれば是非この記事を参考に試していただければと思います。次回はWinGridの外観のカスタマイズについてご紹介しようと思います。10:30関連記事2024-04-04カレンダー予約入力フォームを「カスタムコンポーネント」で実装する方法(よくあるご質問解説)こんにちは!ソリューションコンサルタントの田上です。»Aboutインフラジスティックス・ジャパンのチームメンバーが技術トレンド、製品Tips、サポート情報からライセンス、日々の業務から感じることなど、さまざまなトピックについてお伝えするBlogです。Reserved引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。