DataList.ExtractTemplateRows プロパティ
DataList コントロールの各テンプレート内で定義された Table コントロールの行を抽出して表示するかどうかを示す値を取得または設定します。
Public Overridable Property ExtractTemplateRows As Boolean
[C#]
public virtual bool ExtractTemplateRows {get; set;}
[C++]
public: __property virtual bool get_ExtractTemplateRows();public: __property virtual void set_ExtractTemplateRows(bool);
[JScript]
public function get ExtractTemplateRows() : Boolean;public function set ExtractTemplateRows(Boolean);
プロパティ値
DataList コントロールの各テンプレート内で定義された Table コントロールの行を抽出して表示する場合は true 。それ以外の場合は false 。既定値は false です。
解説
DataList コントロールの内容は、テンプレートを使用して指定されます。通常は、テンプレートに表示するコントロールのリストを記述します。さらに、テンプレートに Table コントロールを配置して、テーブルの行も表示できます。
ExtractTemplateRows プロパティを使用して、 DataList コントロールの各テンプレート内で定義された Table コントロールの行を抽出して表示するかどうかを指定します。 DataList コントロールのテンプレートから抽出されたすべての行が単一のテーブルに表示されます。これにより、 DataList コントロールの機能を維持したまま、他の小さな複数のテーブルから単一のテーブルを作成できます。
メモ このプロパティを true に設定する場合は、 DataList コントロールに含める各テンプレートに対して適切な形式の Table コントロールを作成する必要があります。テーブルの行だけが表示されます。テンプレートの他の内容はすべて無視されます。この機能が適切に動作するには、 Table コントロールを使用する必要があります。 System.Web.UI.HtmlControls.HtmlTable コントロールは、このプロパティと互換性がありません。
テンプレート内で Table コントロールのセルを作成する場合は、 TableCell オブジェクトの ColumnSpan プロパティを使用してセルの幅を示す列数を制御します。 RowSpan プロパティを使用して、セルの幅を示す行数も制御できます。
メモ このプロパティが true に設定されている場合、 RepeatColumns 、 RepeatDirection 、 RepeatLayout の各プロパティは DataList コントロールの外観には影響しません。
使用例
[Visual Basic, C#] ExtractTemplateRows プロパティを使用して、 DataList コントロールのテンプレート内で定義された Table コントロールの行を抽出して表示する方法の例を次に示します。
[Visual Basic, C#] メモ 次のコード サンプルはシングルファイル コード モデルを使用しており、分離コード ファイルに直接コピーされた場合は正常に動作しない可能性があります。このコード サンプルは、拡張子が .aspx の空のテキスト ファイルにコピーする必要があります。Web フォームのコード モデルの詳細については、「 Web フォームのコード モデル 」を参照してください。
<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<html>
<script runat="server">
Function CreateDataSource() As ICollection
Dim dt As New DataTable()
Dim dr As DataRow
dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
dt.Columns.Add(New DataColumn("PriceValue", GetType(String)))
dt.Columns.Add(New DataColumn("DescriptionValue", GetType(String)))
Dim i As Integer
For i = 0 To 9
dr = dt.NewRow()
dr(0) = "Item " & i.ToString()
dr(1) =(1.23 *(i + 1)).ToString()
dr(2) = "Description for Item " + i.ToString()
dt.Rows.Add(dr)
Next i
Dim dv As New DataView(dt)
Return dv
End Function 'CreateDataSource
Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
DataList1.DataSource = CreateDataSource()
DataList1.DataBind()
End If
End Sub 'Page_Load
</script>
<body>
<form runat=server>
<h3>DataList ExtractTemplateRows Example</h3>
<asp:DataList id="DataList1" runat="server"
BorderColor="black"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
ExtractTemplateRows="true"
GridLines="Both">
<HeaderStyle BackColor="#aaaadd">
</HeaderStyle>
<AlternatingItemStyle BackColor="Gainsboro">
</AlternatingItemStyle>
<HeaderTemplate>
<asp:Table id="Table1" runat="server">
<asp:TableRow>
<asp:TableCell
ColumnSpan="2">
Items
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</HeaderTemplate>
<ItemTemplate>
<asp:Table id="Table2" runat="server">
<asp:TableRow>
<asp:TableCell
Text='<%# DataBinder.Eval(Container.DataItem, "StringValue") %>'>
</asp:TableCell>
<asp:TableCell
Text='<%# DataBinder.Eval(Container.DataItem, "PriceValue") %>'>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell
ColumnSpan="2"
Text='<%# DataBinder.Eval(Container.DataItem, "DescriptionValue") %>'>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</html>
[C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<html>
<script runat="server">
ICollection CreateDataSource()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
dt.Columns.Add(new DataColumn("PriceValue", typeof(string)));
dt.Columns.Add(new DataColumn("DescriptionValue", typeof(string)));
for (int i = 0; i < 10; i++)
{
dr = dt.NewRow();
dr[0] = "Item " + i.ToString();
dr[1] = (1.23 * (i+1)).ToString();
dr[2] = "Description for Item " + i.ToString();
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
}
void Page_Load(Object sender, EventArgs e)
{
if (!IsPostBack)
{
DataList1.DataSource = CreateDataSource();
DataList1.DataBind();
}
}
</script>
<body>
<form runat=server>
<h3>DataList ExtractTemplateRows Example</h3>
<asp:DataList id="DataList1" runat="server"
BorderColor="black"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
ExtractTemplateRows="true"
GridLines="Both">
<HeaderStyle BackColor="#aaaadd">
</HeaderStyle>
<AlternatingItemStyle BackColor="Gainsboro">
</AlternatingItemStyle>
<HeaderTemplate>
<asp:Table id="Table1" runat="server">
<asp:TableRow>
<asp:TableCell
ColumnSpan="2">
Items
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</HeaderTemplate>
<ItemTemplate>
<asp:Table id="Table2" runat="server">
<asp:TableRow>
<asp:TableCell
Text='<%# DataBinder.Eval(Container.DataItem, "StringValue") %>'>
</asp:TableCell>
<asp:TableCell
Text='<%# DataBinder.Eval(Container.DataItem, "PriceValue") %>'>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell
ColumnSpan="2"
Text='<%# DataBinder.Eval(Container.DataItem, "DescriptionValue") %>'>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</html>
[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 2000, Windows XP Professional, Windows Server 2003 ファミリ
参照
DataList クラス | DataList メンバ | System.Web.UI.WebControls 名前空間 | Table | TableRow | TableCell | AlternatingItemTemplate | EditItemTemplate | FooterTemplate | HeaderTemplate | ItemTemplate | SelectedItemTemplate | SeparatorTemplate