Partager via


Liaison de données SQL à un contrôle Repeater

Le contrôle Repeater est un contrôle de liste dépendant dont l'aspect est entièrement contrôlé par ses propres modèles. Contrairement à un DataList, un contrôle Repeater ne restitue pas ses modèles dans un tableau HTML et ne propose pas de prise en charge intégrée pour la sélection ou la modification.

L'exemple de code suivant illustre un contrôle Repeater lié à un SqlDataReader qui retourne un jeu en lecture seule et en avant seulement d'enregistrements de données retournés à partir d'une requête SQL, qui contient des informations sur un ensemble de livres. Cet exemple utilise un SqlDataReader afin d'optimiser les performances. Il définit également un HeaderTemplate et un FooterTemplate qui s'affichent respectivement au début et à la fin de la liste.

Le contrôle Repeater itère sur les données liées, en restituant le ItemTemplate à raison d'une fois pour chaque élément de la collection DataSource. Il restitue uniquement les éléments contenus dans ses modèles.

Pour voir ce que donne l'exécution d'un exemple similaire (sans accès à des bases de données), exécutez l'exemple Repeater1.aspx fourni dans le Démarrage rapide ASP.NET.

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
   <script language="VB" runat="server">
      Sub Page_Load(sender As Object, e As EventArgs) 
         '  Create a connection to the "pubs" SQL database located 
         ' on the local computer.
         Dim myConnection As SqlConnection 
         Dim myCommand As SqlDataAdapter
         ' Connect to the SQL database using a SQL SELECT query to get 
         ' all the data from the "Titles" table.
         myConnection = New SqlConnection("server=localhost;" _ 
            & "database=pubs;Trusted_Connection=Yes")
         myCommand = New SqlDataAdapter("SELECT * FROM Titles", _
            myConnection)
         ' Create and fill a  DataSet.
         Dim ds As Dataset = new DataSet()
         myCommand.Fill(ds)
         ' Bind MyRepeater to the  DataSet. MyRepeater is the ID of the
         ' Repeater control in the HTML section of the page.
         MyRepeater.DataSource = ds
         MyRepeater.DataBind()
      End SUb
   </script>

<body>
   <ASP:Repeater id="MyRepeater" runat="server">
      <HeaderTemplate>
         <Table width="100%" style="font: 8pt verdana">
            <tr style="background-color:DFA894">
               <th>
                  Title
               </th>
               <th>
                  Title ID
               </th>
               <th>
                  Type
               </th>
               <th>
                  Publisher ID
               </th>
               <th>
                  Price
               </th>
            </tr>
      </HeaderTemplate>
      <ItemTemplate>
            <tr style="background-color:FFECD8">
               <td>
                  <%# DataBinder.Eval(Container.DataItem, "title") %>
               </td>
               <td>
                  <%# DataBinder.Eval(Container.DataItem, "title_id") %>
               </td>
               <td>
                  <%# DataBinder.Eval(Container.DataItem, "type") %>
               </td>
               <td>
                  <%# DataBinder.Eval(Container.DataItem, "pub_id") %>
               </td>
               <td>
                  <%# DataBinder.Eval(Container.DataItem, "price", _
                     "{0:c}") %>
               </td>
            </tr>
      </ItemTemplate>
      <FooterTemplate>
         </table>

      </FooterTemplate>
   </ASP:Repeater>
</body>
</html>

[C#]
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<script language="C#" runat="server">
   void Page_Load(Object sender, EventArgs e) 
   {
      //  Create a connection to the "pubs" database located 
      // on the local computer.
      SqlConnection myConnection = new SqlConnection("server=localhost;" +
         "database=pubs;Trusted_Connection=Yes");
      // Connect to the SQL database using a SQL SELECT query to get 
      // all the data from the "Titles" table.
      SqlDataAdapter myCommand = new SqlDataAdapter("SELECT * FROM" +
         " Titles", myConnection);
      // Create and fill a DataSet.
      DataSet ds = new DataSet();
      myCommand.Fill(ds);
      // Bind MyRepeater to the  DataSet. MyRepeater is the ID of the
      // Repeater control in the HTML section of the page.
      MyRepeater.DataSource = ds;
      MyRepeater.DataBind();
   }
</script>

<%--  Display the data in the body of the page. --%>
<body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
   <ASP:Repeater id="MyRepeater" runat="server">
      <HeaderTemplate>
         <Table width="100%" style="font: 8pt verdana">
            <tr style="background-color:DFA894">
               <th>
                  Title
               </th>
               <th>
                  Title ID
               </th>
               <th>
                  Type
               </th>
               <th>
                  Publisher ID
               </th>
               <th>
                  Price
               </th>
            </tr>
      </HeaderTemplate>

      <ItemTemplate>
            <tr style="background-color:FFECD8">
               <td>
                  <%# DataBinder.Eval(Container.DataItem, "title") %>
               </td>
               <td>
                  <%# DataBinder.Eval(Container.DataItem,"title_id") %>
               </td>
               <td>
                  <%# DataBinder.Eval(Container.DataItem, "type") %>
               </td>
               <td>
                  <%# DataBinder.Eval(Container.DataItem, "pub_id") %>
               </td>
               <td>
                  <%# DataBinder.Eval(Container.DataItem, 
                     "price", "{0:c}") %>
               </td>
            </tr>
      </ItemTemplate>

      <FooterTemplate>
         </Table>

      </FooterTemplate>
   </ASP:Repeater>
</body>
</html>

Voir aussi

Accès aux données avec ASP.NET | Accès aux données avec ADO.NET | System.Web.UI.WebControls, espace de noms | Repeater, classe