WebDataMenuの項目テンプレート
前項のデータバインディングの際にお気づきかもしれませんが、データバインド可能なプロパティにはImageUrlやNavigateUrlがあります。データバインディングのみでもアイコンの表示をさせることは可能ですが、メニュー内にはユーザーに便利な機能を提供する際に必要な、もっと複雑な項目として表示させることも可能です。
スマートタグ上には[テンプレート コレクションの編集]という項目がありますが、ここをクリックすることによりメニュー上で使用されるテンプレートを追加することができます。
ここで設定されるTemplateID
プロパティの値が実際にメニュー項目のTemplateID
プロパティに設定する値になります。
テンプレートコレクションにテンプレートを追加し、スマートタグより[テンプレートの編集]をクリックします。スマートタグ上にテンプレートのドロップダウンが表示されます。先ほど追加したテンプレートの中身を作成してみましょう。
任意のコントロールをテンプレート内に配置します。ここではシンプルなボタンを配置しました。
さらに、テンプレート内の各コントロールのデータバインディングの設定を行います。
カスタムバインディングにはASP.NETのDataBinderを使用しますが、実際のデータのContainer
オブジェクトはInfragistics.Web.UI.TemplateContainer
オブジェクトにキャストをしたうえで使用します。カスタムバインディングで使用する式は次のようになります。
DataBinder.Eval(((Infragistics.Web.UI.TemplateContainer)Container).DataItem, "MenuName")
これでテンプレートの定義および中身の作成が完了しました。後はこのテンプレートを適用する項目のTemplateID
プロパティを設定することでテンプレートが有効化されます。
ページを実行すると先ほど作成したテキスト項目だけのメニューが、フォーマットを施した項目表示に変わります。
テンプレートは一つ一つの項目に設定することも可能ですし、項目のグループごとに設定することでサブメニューのルックアンドフィールや機能を統一させることも可能です。
WebDataMenuのその他の機能
WebDataMenuには今回紹介した機能だけでなく、縦・横表示や場所による項目展開表示調整、さらにコンテキストメニューとしての使用などの機能が含まれています。