Freigeben über


DataList-Webserversteuerelement

Zeigt die Elemente aus einer Datenquelle in Vorlagen an. Sie können das Erscheinungsbild und den Inhalt des Steuerelements ändern, indem Sie die Vorlagen bearbeiten, aus denen sich die verschiedenen Komponenten des DataList-Steuerelements zusammensetzen, z. B. ItemTemplate und HeaderTemplate.

<asp:DataListid="DataList1"     CellPadding="pixels"     CellSpacing="pixels"     DataKeyField="DataSourceKeyField"     DataSource='<%databindingexpression%>'     ExtractTemplateRows="True|False"     GridLines="None|Horizontal|Vertical|Both"     RepeatColumns="ColumnCount"     RepeatDirection="Vertical|Horizontal"     RepeatLayout="Flow|Table"     ShowFooter="True|False"     ShowHeader="True|False"     OnCancelCommand="OnCancelCommandMethod"     OnDeleteCommand="OnDeleteCommandMethod"     OnEditCommand="OnEditCommandMethod"     OnItemCommand="OnItemCommandMethod"     OnItemCreated="OnItemCreatedMethod"     OnUpdateCommand="OnUpdateCommandMethod"     runat="server">   <AlternatingItemStyle ForeColor="Blue"/>
   <EditItemStyle BackColor="Yellow"/>   <FooterStyle BorderColor="Gray"/>   <HeaderStyle BorderColor="Gray"/>   <ItemStyle Font-Bold="True"/>   <PagerStyle Font-Name="Ariel"/>   <SelectedItemStyle BackColor="Blue"/>   <HeaderTemplate>      Header template HTML   </HeaderTemplate>   <ItemTemplate>      Item template HTML   </ItemTemplate>   <AlternatingItemTemplate>      Alternating item template HTML   </AlternatingItemTemplate>   <EditItemTemplate>      Edited item template HTML   </EditItemTemplate>   <SelectedItemTemplate>      Selected item template HTML   </SelectedItemTemplate>   <SeparatorTemplate>      Separator template HTML   </SeparatorTemplate>   <FooterTemplate>      Footer template HTML   </FooterTemplate></asp:DataList>

Hinweise

Sie können das Layout und den Inhalt des Steuerelements durch Definieren von Vorlagen bearbeiten. In der folgenden Tabelle sind die verschiedenen Vorlagen für das DataList-Steuerelement aufgelistet.

AlternatingItemTemplate Entspricht dem ItemTemplate-Element, wird jedoch für jede zweite Zeile (alternierende Zeilen) im DataList-Steuerelement dargestellt. Sie können ein anderes Erscheinungsbild für das AlternatingItemTemplate-Element angeben, indem Sie dessen Formateigenschaften setzen.
EditItemTemplate Das Layout eines Elements, nachdem es in den Bearbeitungsmodus geschaltet wurde. Diese Vorlage enthält typischerweise Bearbeitungssteuerelemente (z. B. TextBox-Steuerelemente). EditItemTemplate wird für eine Zeile im DataList-Steuerelement aufgerufen, wenn EditItemIndex auf die Ordnungszahl dieser Zeile gesetzt ist.
FooterTemplate Der Text und die Steuerelemente, die am unteren Rand (der Fußzeile) des DataList-Steuerelements dargestellt werden sollen.

FooterTemplate kann nicht datengebunden sein.

HeaderTemplate Der Text und die Steuerelemente, die am oberen Rand (der Kopfzeile) des DataList-Steuerelements dargestellt werden sollen.

HeaderTemplate kann nicht datengebunden sein.

ItemTemplate Die Elemente, die einmal für jede Zeile in der Datenquelle dargestellt werden sollen.
SelectedItemTemplate Die Elemente, die dargestellt werden sollen, wenn der Benutzer ein Element im DataList-Steuerelement auswählt. Dies wird typischerweise verwendet, um die Anzahl der angezeigten Datenfelder zu erweitern und die betreffende Zeile optisch hervorzuheben.
SeparatorTemplate Die Elemente, die zwischen den einzelnen Elementen dargestellt werden sollen.

Das SeparatorTemplate-Element kann nicht datengebunden sein.

Sie können die Darstellung des DataList-Steuerelements anpassen, indem Sie ein Format für die verschiedenen Teile des Steuerelements angeben. In der folgenden Tabelle werden die Formateigenschaften aufgelistet, die das Erscheinungsbild der verschiedenen Teile des DataList-Steuerelements steuern.

Style-Eigenschaft Beschreibung Style-Klasse
AlternatingItemStyle Das Format für jedes zweite Element (alternierende Elemente). TableItemStyle
EditItemStyle Das Format für das Element, das bearbeitet wird. TableItemStyle
FooterStyle Das Format für die Fußzeile am unteren Ende der Liste (falls vorhanden). TableItemStyle
HeaderStyle Das Format für die Kopfzeile am oberen Ende der Liste (falls vorhanden). TableItemStyle
ItemStyle Das Format für die einzelnen Elemente. Style
SelectedItemStyle Das Format für das ausgewählte Element. TableItemStyle
SeparatorStyle Das Format für das Trennzeichen zwischen den einzelnen Elementen. TableItemStyle

Hinweis   Das DataList-Steuerelement unterscheidet sich vom Repeater-Steuerelement darin, dass es die Darstellung in verschiedenen Schreibrichtungen (durch Verwendung der Eigenschaften RepeatColumns und RepeatDirection) und die Option für die Darstellung innerhalb einer HTML-Tabelle unterstützt.

Die Items-Auflistung enthält die datengebundenen Member des DataList-Steuerelements. Die Auflistung wird aufgefüllt, wenn die DataBind-Methode im DataList-Steuerelement aufgerufen wird. Zuerst wird die Kopfzeile (falls vorhanden) hinzugefügt, dann ein Item-Objekt für jede Datenzeile. Wenn eine SeparatorTemplate vorhanden ist, werden Trennzeichen erstellt und zwischen den einzelnen Elementen eingefügt, diese werden jedoch nicht der Items-Auflistung hinzugefügt.

Nachdem alle Elemente für die Zeilen in der DataSource erstellt worden sind, wird dem Steuerelement (aber nicht der Items-Auflistung) das Footer-Element hinzugefügt. Zum Schluss löst das Steuerelement das ItemCreated-Ereignis für jedes Element aus, einschließlich Kopfzeile, Fußzeile und Trennzeichen. Anders als die meisten Auflistungen legt die Items-Auflistung keine Add- oder Remove-Methode offen. Sie können jedoch den Inhalt eines Elements bearbeiten, indem Sie einen Handler für das ItemCreated-Ereignis bereitstellen.

Vorsicht   Text wird nicht in HTML codiert, bevor er im DataList-Steuerelement angezeigt wird. Auf diese Weise können Skripts in HTML-Tags in den Text eingebunden werden. Wenn die Werte in diesem Steuerelement aus Benutzereingaben stammen, müssen die Werte unbedingt geprüft werden, um die Sicherheit zu gewährleisten.

Weitere Informationen zu den Eigenschaften und Ereignissen des DataList-Webserversteuerelements finden Sie unter DataList-Klasse.

Beispiel

Das folgende Beispiel veranschaulicht, wie mit einem DataList-Steuerelement die Elemente einer Datenquelle angezeigt werden.

<%@ 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)))
        
         Dim i As Integer

         For i = 0 To 9
            dr = dt.NewRow()
            dr(0) = "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


      Sub Button1_Click(sender As Object, e As EventArgs)
        
         If DropDown1.SelectedIndex = 0 Then
            DataList1.RepeatDirection = RepeatDirection.Horizontal
         Else
            DataList1.RepeatDirection = RepeatDirection.Vertical
         End If 

         If DropDown2.SelectedIndex = 0 Then
            DataList1.RepeatLayout = RepeatLayout.Table
         Else
            DataList1.RepeatLayout = RepeatLayout.Flow
         End If 

         DataList1.RepeatColumns = DropDown3.SelectedIndex + 1
        
         If Check1.Checked = True And DataList1.RepeatLayout = RepeatLayout.Table Then
            DataList1.BorderWidth = Unit.Pixel(1)
            DataList1.GridLines = GridLines.Both
         Else
            DataList1.BorderWidth = Unit.Pixel(0)
            DataList1.GridLines = GridLines.None
         End If

      End Sub 'Button1_Click
 
   </script>
 
<body>
 
   <form runat="server">

      <h3>DataList Example</h3>
 
      <asp:DataList id="DataList1" runat="server"
           BorderColor="black"
           CellPadding="3"
           Font-Name="Verdana"
           Font-Size="8pt">

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

         <AlternatingItemStyle BackColor="Gainsboro">
         </AlternatingItemStyle>

         <HeaderTemplate>
            Items
         </HeaderTemplate>
               
         <ItemTemplate>
            <%# DataBinder.Eval(Container.DataItem, "StringValue") %>
         </ItemTemplate>
 
      </asp:DataList>
      <p>
      <hr noshade align="left" width="300px">
      RepeatDirection:
      <asp:DropDownList id=DropDown1 runat="server">
         <asp:ListItem>Horizontal</asp:ListItem>
         <asp:ListItem>Vertical</asp:ListItem>
      </asp:DropDownList><br>
      RepeatLayout:
      <asp:DropDownList id=DropDown2 runat="server">
         <asp:ListItem>Table</asp:ListItem>
         <asp:ListItem>Flow</asp:ListItem>
      </asp:DropDownList><br>
      RepeatColumns:
      <asp:DropDownList id=DropDown3 runat="server">
         <asp:ListItem>1</asp:ListItem>
         <asp:ListItem>2</asp:ListItem>
         <asp:ListItem>3</asp:ListItem>
         <asp:ListItem>4</asp:ListItem>
         <asp:ListItem>5</asp:ListItem>
      </asp:DropDownList><br>
      Show Borders: 
      <asp:CheckBox id=Check1 runat="server" /><p>
      <asp:LinkButton id=Button1 
           Text="Refresh DataList" 
           OnClick="Button1_Click" 
           runat="server"/>
   </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)));
         for (int i = 0; i < 10; i++) 
         {
            dr = dt.NewRow();
            dr[0] = "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();
         }
      }

      void Button1_Click(Object Sender, EventArgs e) 
      {

         if (DropDown1.SelectedIndex == 0)
            DataList1.RepeatDirection = RepeatDirection.Horizontal;
         else
            DataList1.RepeatDirection = RepeatDirection.Vertical;
         if (DropDown2.SelectedIndex == 0)
            DataList1.RepeatLayout = RepeatLayout.Table;
         else
            DataList1.RepeatLayout = RepeatLayout.Flow;
         DataList1.RepeatColumns=DropDown3.SelectedIndex+1;
         if ((Check1.Checked ==true) && 
            (DataList1.RepeatLayout == RepeatLayout.Table)) 
         {
            DataList1.BorderWidth = Unit.Pixel(1);
            DataList1.GridLines = GridLines.Both;
         }    
         else  
         {
            DataList1.BorderWidth = Unit.Pixel(0);
            DataList1.GridLines = GridLines.None;
         }    
      }    

   </script>

<body>

   <form runat="server">
      <h3>DataList Sample</h3>

         <asp:DataList id="DataList1"
              BorderColor="black"
              CellPadding="3"
              Font-Name="Verdana"
              Font-Size="8pt"
              runat="server">

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

            <HeaderTemplate>
               Items
            </HeaderTemplate>
            <ItemTemplate>
               <%# DataBinder.Eval(Container.DataItem, "StringValue") %>
            </ItemTemplate>

         </asp:DataList>
         <p>
         <hr noshade align="left" width="300px">
         RepeatDirection:
         <asp:DropDownList id=DropDown1 runat="server">
            <asp:ListItem>Horizontal</asp:ListItem>
            <asp:ListItem>Vertical</asp:ListItem>
         </asp:DropDownList><br>
         RepeatLayout:
         <asp:DropDownList id=DropDown2 runat="server">
            <asp:ListItem>Table</asp:ListItem>
            <asp:ListItem>Flow</asp:ListItem>
         </asp:DropDownList><br>
         RepeatColumns:
         <asp:DropDownList id=DropDown3 runat="server">
            <asp:ListItem>1</asp:ListItem>
            <asp:ListItem>2</asp:ListItem>
            <asp:ListItem>3</asp:ListItem>
            <asp:ListItem>4</asp:ListItem>
            <asp:ListItem>5</asp:ListItem>
         </asp:DropDownList><br>
         Show Borders: 
         <asp:CheckBox id=Check1 runat="server" />
         <p>
         <asp:LinkButton id=Button1 
              Text="Refresh DataList" 
              OnClick="Button1_Click" 
              runat="server"/> 
      </font>
   </form>

</body>
</html>

Siehe auch

Webserversteuerelemente | DataList-Klasse