More Related Content Similar to Dynamic Data (20) Dynamic Data3. ・利用するテンプレートを選択する
Dynamic Data Linq to SQL Web Site
Dynamic Data Linq to SQL Web Application
(LINQ to SQL を利用する:LinqDataSource)
Dynamic Data Entities Web Site
Dynamic Data Entities Web Application
(Entity Frameworkを利用する:
EntityDataSource)
6. Dynamic Dataの基礎終わり!
Routingから対象テーブル名、ページテン
プレートを取得
ページに用意されたコントロール群が
データを適切に表示
DynamicDataManager、LinqDataSource、
GirdView 等
個々の値の表示はフィールドテンプレー
ト(ascx:ユーザコントロール)が行う
8. 計算結果項目の追加
Userのパーシャルクラスを作成し、プロパティを追加
[ScaffoldColumn(true)] <- DynamicDataの表示対象とする
[ReadOnly(true)] <- 読み取り専用
[DisplayFormat(ApplyFormatInEditMode=true, DataFormatString="{0}歳")]
public int age {
get {
int _age = DateTime.Now.Year - birthday.Year;
if (birthday.AddDays(-1).AddYears(_age) > DateTime.Now)_age--;
return _age;
}
}
9. 削除フラグの非表示
LinqDataSourceで削除フラグが立っていないデータに絞り込み
LinqDataSourceではテーブルの全項目を対象としないと追加/更新/削除不可
絞り込みは特定のデータだけでなく、ほかのコントロール等の値と連携することも可
MetaDataクラスを作成し、プロパティに属性をつける
[MetadataType(typeof(UserMetaData))] <- MetaDataクラス名の指定
public partial class User
{ …
public class UserMetaData <- 通常のクラスでもインナークラスでも可
{
[ScaffoldColumn(false)] <- DynamicDataの表示対象からはずす
public object delflg { get; set; }
<- 元のクラスのプロパティと名前さえ合っていればよい
}
11. ListViewの利用
ListView/LinqDataSource/
DynamicDataManagerを設定
ListViewの構成時に「動的なデータを有効に
する」
データ項目の並び替え/非表示項目の削除
ItemTemplate
AlternatingItemTemplate
InsertItemTemplate
LayoitTemplate(項目の表示名を設定)
EditItemTemplate
SelectedItemTemplate
14. 入力文字列の評価
[RegularExpression(
@"¥w+([-+.']¥w+)*@¥w+([-.]¥w+)*¥.¥w+([-.]¥w+)*",
ErrorMessage = "メールアドレスとして正しい値を
入力してください")]
public object mail { get; set; }
正規表現を用いて入力チェック
15. 値変換エラーのメッセージ変更
専用のエラーチェック属性クラスを作成する
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field,
AllowMultiple = false)]
sealed public class DateTimeCheckAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime dt;
return DateTime.TryParse((string)value, out dt);
}
}
[DateTimeCheck(ErrorMessage = "生年月日に日付として正しい値を入力
してください")]
public object birthday { get; set; }
16. カスタムフィールドテンプレート
[UIHint("ForeignKeyText")]
<- 利用するフィールドテンプレートを指定
public object Gender { get; set; }
デフォルトでは項目のタイプから自動で判断
用意されているフィールドテンプレートをコピーし、
修正するのが便利
Type名.ascx、Type名_Edit.ascxが利用される
存在しないType名を指定するとデフォルトの動作にな
る
コードビハインド側のクラス名の修正を忘れずに(こ
ちらがキー)
18. 項目間の関係による入力チェック
LINQ to SQLクラスではパーシャルメソッドが利用できる
ValidationExceptionを返す
partial void OnValidate(System.Data.Linq.ChangeAction action)
{
if (gid == 1 && age < 18)
throw new ValidationException("男性は18歳以上しか登録できません");
if (gid == 2 && age < 16)
throw new ValidationException("女性は16歳以上しか登録できません");
}
actionの値で、追加/更新/削除それぞれの場合の動作を指定可能
DynamicValidatorを追加し、ListViewに連結
ValidationGroup="Insert"用も忘れずに
19. 今日のまとめ
DataAnnotationの属性一覧
@ITの記事が参考になる
DBアプリをコーディングレスで構築する
「ASP.NET Dynamic Data」
データベースがあれば、とりあえず動く
ものをみせて、そこでのエラーチェック、
表示は徐々に変えていける