Compartir vía


DataList.ExtractTemplateRows Propiedad

Definición

Obtiene o establece un valor que indica si se extraen y se muestran las filas de un control Table, definido en cada plantilla de un control DataList.

public:
 virtual property bool ExtractTemplateRows { bool get(); void set(bool value); };
public virtual bool ExtractTemplateRows { get; set; }
member this.ExtractTemplateRows : bool with get, set
Public Overridable Property ExtractTemplateRows As Boolean

Valor de propiedad

Es true si se extraen y se muestran las filas de un control Table, definido en cada plantilla de un control DataList; en caso contrario, es false. El valor predeterminado es false.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar la ExtractTemplateRows propiedad para extraer y mostrar las filas de Table controles definidos en las plantillas del DataList control.

Nota

En el ejemplo de código siguiente se usa el modelo de código de un solo archivo y es posible que no funcione correctamente si se copia directamente en un archivo de código subyacente. Este ejemplo de código debe copiarse en un archivo de texto vacío que tenga una extensión .aspx. Para obtener más información sobre el modelo de código de formularios Web Forms, vea ASP.NET modelo de código de página de formularios web Forms.

<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">

        private 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 = 1; i < 11; i++)
            {
                dr = dt.NewRow();
                dr[0] = "Item " + i.ToString();
                dr[1] = String.Format("{0:C}", (1.23 * (i + 1)));
                dr[2] = "Description for Item " + i.ToString();
                dt.Rows.Add(dr);
            }

            DataView dv = new DataView(dt);
            return dv;
        }

        private void Page_Load(Object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataList1.DataSource = CreateDataSource();
                DataList1.DataBind();
            }
        }
    </script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>
        ExtractTemplateRows Example
    </title>
</head>
<body>
    <form id="form1" runat="server">

    <h3>DataList ExtractTemplateRows Example</h3>

    <asp:DataList id="DataList1" runat="server"
        BorderColor="black"
        CellPadding="3"
        Font-Names="Arial, Helvetica"
        Font-Size="9pt"
        ExtractTemplateRows="true"
        GridLines="Both">

        <HeaderStyle BackColor="LightBlue" />
        <AlternatingItemStyle BackColor="#efefef" />

        <HeaderTemplate>
        <asp:Table id="Table1" runat="server">
            <asp:TableRow>
                <asp:TableHeaderCell
                    ColumnSpan="2">
                    Items List
                </asp:TableHeaderCell>
            </asp:TableRow>
        </asp:Table>
        </HeaderTemplate>

        <ItemTemplate>
            <asp:Table id="Table2" runat="server">
                <asp:TableRow>
                    <asp:TableCell 
                        Text='<%# Eval("StringValue") %>'>
                    </asp:TableCell>
                    <asp:TableCell 
                        HorizontalAlign="Right"
                        Text='<%# Eval("PriceValue") %>'>
                    </asp:TableCell>
                </asp:TableRow>
                <asp:TableRow>
                    <asp:TableCell
                        ColumnSpan="2" 
                        Text='<%# Eval("DescriptionValue") %>'>
                    </asp:TableCell>
                </asp:TableRow>
            </asp:Table>
        </ItemTemplate> 
    </asp:DataList>
 
   </form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
        Private 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 = 1 To 10
                dr = dt.NewRow()
                dr(0) = "Item " + i.ToString()
                dr(1) = String.Format("{0:C}", (1.23 * (i + 1)))
                dr(2) = "Description for Item " + i.ToString()
                dt.Rows.Add(dr)
            Next

            Dim dv As New DataView(dt)
            Return dv
        End Function

        Private Sub Page_Load(ByVal sender As Object, _
            ByVal e As EventArgs)

            If Not IsPostBack Then
                DataList1.DataSource = CreateDataSource()
                DataList1.DataBind()
            End If
        End Sub
    </script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>
        ExtractTemplateRows Example
    </title>
</head>
<body>
    <form id="form1" runat="server">

    <h3>DataList ExtractTemplateRows Example</h3>

    <asp:DataList id="DataList1" runat="server"
        BorderColor="black"
        CellPadding="3"
        Font-Names="Arial, Helvetica"
        Font-Size="9pt"
        ExtractTemplateRows="true"
        GridLines="Both">

        <HeaderStyle BackColor="#aaaadd" />
        <AlternatingItemStyle BackColor="#efefef" />

        <HeaderTemplate>
        <asp:Table id="Table1" runat="server">
            <asp:TableRow>
                <asp:TableHeaderCell
                    ColumnSpan="2">
                    Items List
                </asp:TableHeaderCell>
            </asp:TableRow>
        </asp:Table>
        </HeaderTemplate>

        <ItemTemplate>
            <asp:Table id="Table2" runat="server">
                <asp:TableRow>
                    <asp:TableCell 
                        Text='<%# Eval("StringValue") %>'>
                    </asp:TableCell>
                    <asp:TableCell 
                        HorizontalAlign="Right"
                        Text='<%# Eval("PriceValue") %>'>
                    </asp:TableCell>
                </asp:TableRow>
                <asp:TableRow>
                    <asp:TableCell
                        ColumnSpan="2" 
                        Text='<%# Eval("DescriptionValue") %>'>
                    </asp:TableCell>
                </asp:TableRow>
            </asp:Table>
        </ItemTemplate> 
    </asp:DataList>
 
   </form>
</body>
</html>

Comentarios

El contenido del DataList control se especifica mediante plantillas. Normalmente, se muestran los controles que desea mostrar en las plantillas. También puede colocar un Table control en una plantilla y mostrar las filas de la tabla.

Utilice la ExtractTemplateRows propiedad para especificar si se extraen y muestran las filas de un Table control definido en cada plantilla de un DataList control. Todas las filas extraídas de las plantillas del DataList control se muestran en una sola tabla. Esto le permite crear una sola tabla a partir de otras tablas más pequeñas y mantener las características del DataList control.

Nota

Cuando esta propiedad se establece trueen , debe proporcionar un control bien formado Table para cada plantilla que desee incluir en el DataList control . Solo se mostrarán las filas de las tablas. Se omitirá el resto del contenido de la plantilla. Debe usar un Table control para que esta característica funcione correctamente. El System.Web.UI.HtmlControls.HtmlTable control no es compatible con esta propiedad.

Al crear una celda para un Table control en una plantilla, puede usar la ColumnSpan propiedad del TableCell objeto para controlar el número de columnas que abarca la celda. También puede usar la RowSpan propiedad para controlar el número de filas que abarca la celda.

Nota

Las RepeatColumnspropiedades , RepeatDirectiony RepeatLayout no afectan a la apariencia del DataList control cuando esta propiedad se establece trueen .

Se aplica a

Consulte también