方法 : DataList Web サーバー コントロールのテンプレートを動的に作成する
更新 : 2007 年 11 月
テンプレートは、デザイン時に割り当てる必要はありません。状況によってはテンプレートをデザイン時にレイアウトできることもありますが、実行中に非常に広範な変更を行うことがわかっている場合は、新しいテンプレートを実行時に読み込むことでプログラミングを簡素化できます。また、複数の利用できるテンプレートを用意して、実行時にテンプレートを変更することもできます。
テンプレート定義ファイルを作成するには
新しいテキスト ファイルを作成して .ascx 拡張子を付けます。
宣言テンプレートで使用するのと同じマークアップを使用して、テンプレート定義ステートメントをテンプレート ファイルに追加し、保存します。
データ バインドされている Label コントロールを含むテンプレートのマークアップを持つ .ascx ファイルの内容の例を次に示します。データ バインディングは、DataList コントロールにバインドされているデータ ソースに対して実行時に解決されます。
Name: <asp:Label ID="CategoryNameLabel" runat="server" Text='<%# Eval("CategoryName") %>'> </asp:Label> <br /> Description: <asp:Label ID="DescriptionLabel" runat="server" Text='<%# Eval("Description") %>'> </asp:Label>
テンプレートを動的に作成するには
Web フォーム ページに、LoadTemplate メソッドを使用してテンプレートを読み込むコードを追加します。このメソッドはファイルからテンプレート定義を読み取り、ITemplate オブジェクトを作成します。作成したオブジェクトは DataList コントロールの任意のテンプレートに割り当てることができます。
次の例では、Page_Init イベント ハンドラを使用して、上記の手順で作成した NewTemplate.ascx テンプレートを読み込みます。
Protected Sub Page_Init(ByVal Sender As System.Object, _ ByVal e As System.EventArgs) DataList1.AlternatingItemTemplate = _ Page.LoadTemplate("NewTemplate.ascx") End Sub
protected void Page_Init(object sender, EventArgs e) { DataList1.AlternatingItemTemplate = Page.LoadTemplate("NewTemplate.ascx"); }