Поделиться через


Общие сведения о серверном веб-элементе управления Repeater

Обновлен: Ноябрь 2007

Серверный веб-элемент управления Repeater является контейнерным элементом управления с привязкой к данным, который создает список отдельных элементов. Структура отдельных элементов на веб-странице определяется с помощью шаблонов. При выполнении страницы данный элемент управления повторяет структуру для каждого элемента в источнике данных.

Данный раздел содержит:

  • Базовые сведения

  • Примеры кода

  • Ссылка на классы

Базовые сведения

Серверный веб-элемент управления Repeater — это контейнерный элемент управления, позволяющий создавать настраиваемые списки на основе любых данных, доступных странице. Элемент управления Repeater не имеет встроенной собственной отрисовки, это означает, что необходимо предоставить макет для элемента управления Repeater с помощью создания шаблонов. При выполнении страницы элемент управления Repeater циклически просматривает записи в источнике данных и отображает элемент для каждой записи.

Элемент управления Repeater не имеет используемого по умолчанию внешнего вида, поэтому его можно использовать для создания многих типов списков, в том числе следующих:

  • Структура таблицы

  • Список, в котором разделителем является запятая (например, a, b, c, d, и т. д.)

  • Список в формате XML

Использование шаблонов с элементом управления Repeater

Для использования элемента управления Repeater создаются шаблоны, определяющие размещение содержимого элемента управления. Шаблоны могут содержать любое сочетание разметки и элементов управления. Если шаблоны не определены или ни один из шаблонов не содержит элементы, то элемент управления не появится на странице при выполнении приложения.

В следующей таблице описаны шаблоны, которые поддерживаются элементом управления Repeater.

Свойство шаблона

Описание

ItemTemplate

Содержит элементы HTML и элементы управления, которые отображаются один раз для каждого элемента данных в источнике данных.

AlternatingItemTemplate

Содержит элементы HTML и элементы управления, которые отображаются один раз для каждого второго элемента данных в источнике данных. Как правило, этот шаблон используется для создания другого вида для чередующихся элементов, например, цвет фона, отличный от цвета, указанного в свойстве ItemTemplate.

HeaderTemplate и FooterTemplate.

Содержит текст и элементы управления, отображающиеся в начале и конце списка, соответственно.

SeparatorTemplate

Содержит элементы, отображающиеся между элементами. Типичным примером может служить строка (с использованием элемента hr).

Дополнительные сведения см. в разделе Шаблоны серверных веб-элементов управления ASP.NET.

Привязка данных к элементу управления Repeater

Элемент управления Repeater должен быть привязан к источнику данных. Наиболее распространенным источником данных является элемент управления источником данных, например элемент управления SqlDataSource или ObjectDataSource. Кроме того, можно привязать элемент управления Repeater к любому классу, реализующему интерфейс IEnumerable, который включает наборы данных ADO.NET (класса DataSet), объекты чтения данных (классы SqlDataReader или OleDbDataReader) или большинство коллекций.

При связывании данных источник данных указывается для всего элемента Repeater целиком. При добавлении элементов управления к элементу управления Repeater например, при добавлении элемента управления Label или TextBox к шаблону — нужно использовать синтаксис привязки данных для привязки отдельного элемента управления к полю элементов, возвращаемых источником данных. В следующем примере показывается страница ItemTemplate, содержащая элемент управления с привязкой к данным Label.

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>ASP.NET Repeater Example</title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
      <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
        <HeaderTemplate>
          <table>
            <tr>
              <th>
                Name</th>
              <th>
                Description</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
          <tr>
            <td style="background-color:#CCFFCC">
              <asp:Label runat="server" ID="Label1" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td style="background-color:#CCFFCC">
              <asp:Label runat="server" ID="Label2" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr>
            <td>
              <asp:Label runat="server" ID="Label3" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="Label4" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
          </table>
        </FooterTemplate>
      </asp:Repeater>
      <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        ID="SqlDataSource1" runat="server" SelectCommand="SELECT [CategoryID], [CategoryName], 
            [Description] FROM [Categories]"></asp:SqlDataSource>
    </div>
  </form>
</body>
</html>
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>ASP.NET Repeater Example</title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
      <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
        <HeaderTemplate>
          <table>
            <tr>
              <th>
                Name</th>
              <th>
                Description</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
          <tr>
            <td style="background-color:#CCFFCC">
              <asp:Label runat="server" ID="Label1" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td style="background-color:#CCFFCC">
              <asp:Label runat="server" ID="Label2" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
          <tr>
            <td>
              <asp:Label runat="server" ID="Label3" Text='<%# Eval("CategoryName") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="Label4" Text='<%# Eval("Description") %>' />
            </td>
          </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
          </table>
        </FooterTemplate>
      </asp:Repeater>
      <asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        ID="SqlDataSource1" runat="server" SelectCommand="SELECT [CategoryID], [CategoryName], 
              [Description] FROM [Categories]"></asp:SqlDataSource>
    </div>
  </form>
</body>
</html>
x8f2zez5.alert_note(ru-ru,VS.90).gifПримечание.

Нельзя привязать элементы управления в шаблонах верхнего колонтитула, разделителя и нижнего колонтитула, используя функцию привязки данных Eval. Если в этих шаблонах имеются элементы управления, то их свойства можно просто определить статически.

Общие сведения о привязке к данным в серверных веб-элементах управления см. в разделе Пошаговое руководство. Основы доступа к данным на веб-страницах и Практическое руководство. Добавление серверных веб-элементов управления Repeater на страницу Web Forms.

События, поддерживаемые элементом управления Repeater

Элемент управления Repeater поддерживает несколько событий. Одно из них, событие ItemCreated, дает возможность управлять процессом создания элементов во время выполнения. Событие ItemDataBound также позволяет настраивать элемент управления Repeater, но только после того, как данные становятся доступны для проверки. Например, при использовании элемента управления Repeater для отображения списка необходимых дел можно показывать просроченные элементы красным цветом, выполненные — черным, а остальные — зеленым. Любое из вышеописанных событий может быть использовано для переопределения форматирования, определенного в шаблоне.

При нажатии кнопок отдельных элементов возникает событие ItemCommand. Это событие разработано так, чтобы позволить внедрить серверные веб-элементы управления Button, LinkButton, или ImageButton в шаблон элемента, а потом получать уведомление о нажатии пользователем кнопки. При нажатии кнопки событие передается в контейнер кнопки — элемент управления Repeater. Наиболее часто событие ItemCommand используется для программирования поведений обновления и удаления в элементе управления Repeater. Так как каждое нажатие кнопки вызывает одно и то же событие ItemCommand, то можно определить, какая кнопка была нажата, установив для свойства CommandName каждой кнопки уникальное строковое значение. Свойство CommandSource параметра RepeaterCommandEventArgs содержит свойство CommandName нажатой кнопки.

Дополнительные сведения см. в разделе Пошаговое руководство. Отклик на события Button в элементах DataList или Repeater.

К началу

Примеры кода

Практическое руководство. Добавление серверных веб-элементов управления Repeater на страницу Web Forms

К началу

Ссылки на классы

В следующей таблице перечислены ключевые классы, связанные с элементом управления Repeater.

Член

Описание

Repeater

Основной класс элемента управления.

К началу

См. также

Ссылки

Общие сведения о серверном веб-элементе управления DataList