Dataによるデフォルトの表示方法そのものを変更したいというケースもあるかもしれない。Dataフィールド)を編集することで、アプリケーション全体への影響は最小限に、柔軟にデータの表示や挙動をカスタマイズすることができる。Dataアプリケーションのフォルダ構造についておさらいしておこう。Dataフィールド)を利用して、データの表示方法や挙動を規定している。Dataフィールドは、以下のとおりである。Dataフィールドを選択/表示するというわけだ。Dataフィールドをカスタマイズして、日付入力用のポップアップ・カレンダー付きテキストボックスを作成してみよう。Toolkitに含まれるCalendarコントロール(CalendarExtender)の役割である。AJAX]Calendarコントロールで日付入力ボックスを定義するには?」も併せて参照いただきたい。Dataフィールドをカスタマイズして作成した、日付入力用のポップアップ・カレンダー付きテキストボックスを表示している。具体的なサンプル作成の手順は、次のとおりだ。Dataフィールド(.ascxファイル)をコピーした方が手っ取り早いだろう。Dataフィールドをカスタマイズしたいので、「DateTime_Edit.ascx」をコピーして、これを「Calendar_Edit.ascx」とリネームしておく*4。Dataフィールドは、表示用の「Xxxxx.ascx」と編集用の「Xxxxx_Edit.ascx」で1つのセットとなるが(原則)、片方が標準のそれで賄える場合は省略しても構わない。オリジナルの「.ascx」ファイルを直接に変更することも可能だ。その場合は(特定の列だけではなく)すべての日付型データを編集する際に、ポップアップ・カレンダーが表示されることになるので要注意。[2]カレンダー機能を実装する後は、Calendar_Edit.ascxにカレンダー機能を追加するだけだ。フォーム・デザイナからテキストボックスを選択し、右肩のタスク・メニューから[エクステンダの追加]を選択してほしい。エクステンダ・コントロールの追加タスク・メニューから[エクステンダの追加]を選択。ウィザード]ダイアログが表示されるので(図21)、ここでは「CalendarExtender」を選択して、[OK]ボタンをクリックする。これで、テキストボックスにカレンダー機能が追加された。[エクステンダウィザード]ダイアログまた、プロパティ・ウィンドウからは、Calendarコントロールの以下のプロパティを設定しておこう。II」が詳しいので、こちらも併せて参照されたい。Data標準のスタイルシートが邪魔をして、そのままではカレンダーが正しく表示されないはずだ。Data標準のスタイルシートであるSite.cssの末尾に、以下のような記述を追記しておく。190px;}Calendarコントロール表示のためのスタイル定義(Site.css)もちろん、これは応急処置的な最低限の記述であるので、実際にアプリケーションを構築する際には、適宜、サイト・デザインに応じたスタイルで差し替えてほしい。[3]メタデータ・クラスにユーザー・コントロールを関連付ける作成したユーザー・コントロールを有効にするには、メタデータ・クラスの該当するプロパティに、使用するユーザー・コントロールを関連付けておく必要がある。ユーザー・コントロールを関連付けるのは、UIHint属性の役割だ。Object自作のCalendar_Edit.ascxを有効にする設定(上:Books.cs、下:Books.vb)UIHint属性には、ユーザー・コントロールのベース名だけを指定する点に要注意だ。ベース名とは、ファイル名からアクションを表す「_Edit」の部分と拡張子とを取り除いたもので、本稿の例では「Calendar」となる。Dataは特にエラーを返さないので、要注意。Dataフィールド(この例であれば、DateTime.ascx/DateTime_Edit.ascx)を使用する。以上が理解できたら、アプリケーションを実行し、Booksテーブルの編集画面を表示してみよう。本節冒頭の図19のように、刊行日列にフォーカスを移動すると、カレンダーがポップアップ表示されれば成功である。Dataフィールドを編集するだけでも、かなり柔軟に表示/挙動のカスタマイズを行うことができる。Data機能を使う意味をなくしてしまうことにもなりかねない。ページのカスタマイズは最大限、メタデータ・レベルで行うことを強くお勧めする。してもページ単位にレイアウトの変更を施したいという場合には、カスタム・テンプレート機能を利用することで、これを実現することが可能である。最後に、このための具体的な手順を見ていくことにしよう。Dataアプリケーションのページは、List.aspx、ListDetails.aspx、Details.aspx、Edit.aspx、Insert.aspxというテンプレートから構成されている。Dataではこれらの汎用テンプレートに対して、データ・モデルに応じて動的にデータを割り当てているわけだ。自作のテンプレートを用意する場合には、(もちろん)一から記述することも可能であるが、一般的にはこれら汎用テンプレートから必要なものをコピーして使用するのが効率的だろう*5。ここではList.aspxをコピーして、これを「/DynamicData/CustomPages/<テーブル名>」フォルダ配下(Booksテーブルであれば「/DynamicData/CustomPages/Books」)に保存する。Dataは保存先のフォルダとファイル名によって、対象のテンプレートを認識するので、フォルダ/ファイル名は変更してはならない。Dataフィールド同様、汎用テンプレートを直接に編集することも可能である。その場合は、変更内容はすべての画面に適用されることになる。[2]ページ・テンプレートを編集する後は、このコピーしたテンプレートを編集していくだけだ。ここでは、以下のリストの要領でテンプレートを編集してほしい(追加するのは太字部分)。ここでは、タイトル部分を「カスタム・テンプレート:<テーブル名>」とすると同時に、フィルタリングのための選択ボックスを縦並び(デフォルトは横並び)になるように変更している。Data機能を有効にするためのコントロールで、必ずページの先頭に配置する必要がある。テンプレートをカスタマイズする場合にも、この記述は削除してはならない。FilterRepeaterコントロールはフィルタリングのためのラベルと選択ボックスのペアを繰り返し表示するための機能を提供する。TIPS:[ASP.NET]Repeater/DataListコントロールのテンプレートを別ファイルで管理するには?」なども併せて参照いただくとよい。デフォルトの状態ではLabelとDynamicFilter(実体は「DynamicData/Content/FilterUserControl.ascx」)が横並びとなるようなテンプレートとなっているので、ここではItemTemplateテンプレートの末尾に<br>タグを追加して、選択ボックスが縦に並ぶように変更している。これでページ・テンプレートのカスタマイズは完了だ。Default.aspxを起動し、Booksテーブルの内容を表示すると、以下の図22のように(標準のテンプレートではなく)自分でカスタマイズしたテンプレートの内容が表示されていれば成功である。カスタマイズしたテンプレートを表示タイトル部分を変更。Dataの基本的な用法について見てきた。Dataはあくまで汎用的なCRUD機能を構築するための機能であり、(可能であるとはいうものの)ページ・テンプレートを直接にカスタマイズする必要があるようなページを個別に作成する用途には適さない。Dataはその威力を発揮するだろう。Data機能の目的といってもよいのである。Frameworkについて解説する予定である。7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。TranslatorはPowerPoint用のアドイン。