DynamicDataなら簡単!動きを確認しながら作る社内      Webアプリ   VSUG フォーラムリーダ  小野@どっとねっとふぁん
Dynamic Dataの基礎
・利用するテンプレートを選択する Dynamic Data Linq to SQL Web Site Dynamic Data Linq to SQL Web Application       (LINQ to SQL を利用する:Li...
・利用するデータモデルを追加する LINQ to SQLクラス ADO.NET Entity Data Model
・Global.asaxの設定 DataContextの設定とScaffoldAllTables routes定義の変更       一覧/詳細/挿入/更新をページ毎に処理       一覧/詳細/挿入/更新を1つのページ内で処理
Dynamic Dataの基礎終わり!   Routingから対象テーブル名、ページテン    プレートを取得   ページに用意されたコントロール群が    データを適切に表示       DynamicDataManager、LinqD...
ページテンプレートに頼らない GridView/LinqDataSource/  DynamicDataManagerを設定 コードでDynamicDataManagerとGridView  を連結 この場合、Routingは必須要素ではない
計算結果項目の追加   Userのパーシャルクラスを作成し、プロパティを追加    [ScaffoldColumn(true)] <- DynamicDataの表示対象とする    [ReadOnly(true)] <- 読み取り専用    ...
削除フラグの非表示   LinqDataSourceで削除フラグが立っていないデータに絞り込み       LinqDataSourceではテーブルの全項目を対象としないと追加/更新/削除不可       絞り込みは特定のデータだけでなく...
項目の並べ替え DynamicFieldを追加 項目の表示名を設定
ListViewの利用 ListView/LinqDataSource/  DynamicDataManagerを設定 ListViewの構成時に「動的なデータを有効に  する」 データ項目の並び替え/非表示項目の削除       It...
エラーメッセージの変更[Required(ErrorMessage="名前を入力してください")]        <- 必須エラーメッセージpublic object name { get; set; }[Required(ErrorMessa...
表示方法の変更[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:yyyy/MM/dd}")]public object birthday { get; set;...
入力文字列の評価[RegularExpression(        @"w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*",        ErrorMessage = "メールアドレスとして正しい値を        ...
値変換エラーのメッセージ変更   専用のエラーチェック属性クラスを作成する[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field,AllowMultiple = f...
カスタムフィールドテンプレート[UIHint("ForeignKeyText")]       <- 利用するフィールドテンプレートを指定public object Gender { get; set; }   デフォルトでは項目のタイプから...
エラーのサマリー表示 ValidationSummaryを追加 ListViewではValidationGroup="Insert"用の  ValidationSummaryも必要 フィールドテンプレート内のValidatorの  Tex...
項目間の関係による入力チェック LINQ to SQLクラスではパーシャルメソッドが利用できる ValidationExceptionを返すpartial void OnValidate(System.Data.Linq.ChangeAct...
今日のまとめ   DataAnnotationの属性一覧       @ITの記事が参考になる           DBアプリをコーディングレスで構築する            「ASP.NET Dynamic Data」   データベ...
Upcoming SlideShare
Loading in …5
×

20091207

534 views
483 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
534
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

20091207

  1. 1. DynamicDataなら簡単!動きを確認しながら作る社内 Webアプリ VSUG フォーラムリーダ 小野@どっとねっとふぁん
  2. 2. Dynamic Dataの基礎
  3. 3. ・利用するテンプレートを選択する 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)
  4. 4. ・利用するデータモデルを追加する LINQ to SQLクラス ADO.NET Entity Data Model
  5. 5. ・Global.asaxの設定 DataContextの設定とScaffoldAllTables routes定義の変更  一覧/詳細/挿入/更新をページ毎に処理  一覧/詳細/挿入/更新を1つのページ内で処理
  6. 6. Dynamic Dataの基礎終わり! Routingから対象テーブル名、ページテン プレートを取得 ページに用意されたコントロール群が データを適切に表示  DynamicDataManager、LinqDataSource、 GirdView 等 個々の値の表示はフィールドテンプレー ト(ascx:ユーザコントロール)が行う
  7. 7. ページテンプレートに頼らない GridView/LinqDataSource/ DynamicDataManagerを設定 コードでDynamicDataManagerとGridView を連結 この場合、Routingは必須要素ではない
  8. 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. 9. 削除フラグの非表示 LinqDataSourceで削除フラグが立っていないデータに絞り込み  LinqDataSourceではテーブルの全項目を対象としないと追加/更新/削除不可  絞り込みは特定のデータだけでなく、ほかのコントロール等の値と連携することも可 MetaDataクラスを作成し、プロパティに属性をつける[MetadataType(typeof(UserMetaData))] <- MetaDataクラス名の指定public partial class User{ …public class UserMetaData <- 通常のクラスでもインナークラスでも可{ [ScaffoldColumn(false)] <- DynamicDataの表示対象からはずす public object delflg { get; set; } <- 元のクラスのプロパティと名前さえ合っていればよい}
  10. 10. 項目の並べ替え DynamicFieldを追加 項目の表示名を設定
  11. 11. ListViewの利用 ListView/LinqDataSource/ DynamicDataManagerを設定 ListViewの構成時に「動的なデータを有効に する」 データ項目の並び替え/非表示項目の削除  ItemTemplate  AlternatingItemTemplate  InsertItemTemplate  LayoitTemplate(項目の表示名を設定)  EditItemTemplate  SelectedItemTemplate
  12. 12. エラーメッセージの変更[Required(ErrorMessage="名前を入力してください")] <- 必須エラーメッセージpublic object name { get; set; }[Required(ErrorMessage="生年月日を入力してください")]public object birthday { get; set; } データベースではNUll許容の項目を必須と することも可
  13. 13. 表示方法の変更[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:yyyy/MM/dd}")]public object birthday { get; set; } DateTimeを日付のみ表示にするといった ことが可
  14. 14. 入力文字列の評価[RegularExpression( @"w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*", ErrorMessage = "メールアドレスとして正しい値を 入力してください")]public object mail { get; set; } 正規表現を用いて入力チェック
  15. 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. 16. カスタムフィールドテンプレート[UIHint("ForeignKeyText")] <- 利用するフィールドテンプレートを指定public object Gender { get; set; } デフォルトでは項目のタイプから自動で判断 用意されているフィールドテンプレートをコピーし、 修正するのが便利 Type名.ascx、Type名_Edit.ascxが利用される 存在しないType名を指定するとデフォルトの動作にな る コードビハインド側のクラス名の修正を忘れずに(こ ちらがキー)
  17. 17. エラーのサマリー表示 ValidationSummaryを追加 ListViewではValidationGroup="Insert"用の ValidationSummaryも必要 フィールドテンプレート内のValidatorの Textに"*"を設定
  18. 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. 19. 今日のまとめ DataAnnotationの属性一覧  @ITの記事が参考になる  DBアプリをコーディングレスで構築する 「ASP.NET Dynamic Data」 データベースがあれば、とりあえず動く ものをみせて、そこでのエラーチェック、 表示は徐々に変えていける

×