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


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

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

Элемент управления ASP.NET ListView позволяет создавать привязку к элементам данных, возвращаемых из источника данных, и отображать их. Можно отображать данные на страницах. Можно отображать элементы по отдельности или группировать их.

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

В этом разделе рассматриваются следующие темы:

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

  • Создание шаблонов для элемента управления ListView

  • Разбиение данных по страницам

  • Сортировка данных

  • Изменение данных

  • Применение стилей к элементам ListView

  • Справочные сведения о классах

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

  • Дополнительные ресурсы

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

Элемент управления ListView можно привязывать к данным следующими способами:

  • Используя свойство DataSourceID. Этот способ позволяет привязывать элемент управления ListView к элементу управления источником данных, такому как элемент управления SqlDataSource. Этот способ является предпочтительным, поскольку он позволяет элементу управления ListView использовать преимущества возможностей элемента управления источником данных. Также он предоставляет встроенные функциональные возможности для сортировки, разбиения по страницам, вставки, удаления и обновления. Кроме того, этот способ позволяет использовать выражения двусторонней привязки. Дополнительные сведения об элементах управления источником данных см. в разделе Общие сведения об элементах управления источниками данных.

  • Используя свойство DataSource. Этот способ позволяет производить привязку к различным объектам, которые включают наборы данных и модули чтения ADO.NET, а также к структурам в памяти, таким как коллекции. Этот способ требует написания кода для любой дополнительной функциональной возможности, такой как сортировка, разбиение по страницам и обновление.

К началу

Создание шаблонов для элемента управления ListView

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

Основной (корневой) макет элемента управления ListView определяется при помощи создания шаблона LayoutTemplate. Шаблон LayoutTemplate должен включать элемент управления, который работает как местозаполнитель. Например, шаблон макета может включать элемент управления ASP.NET Table, Panel или Label. (Также он может включать элементы HTML table, div или span со значением "server" атрибута runat.) Эти элементы управления будут содержать выходные данные для каждого элемента, определяемого шаблоном ItemTemplate, которые могут быть сгруппированы в шаблоне GroupTemplate.

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

Группирование элементов

При необходимости, можно группировать элементы в элементе управления ListView, используя шаблон GroupTemplate. Обычно элементы группируются для создания мозаичной табличной структуры. В мозаичной табличной структуре элементы повторяются в строке столько раз, сколько определено свойством GroupItemCount. Для создания мозаичной табличной структуры шаблон макета может содержать элемент управления ASP.NET Table или элемент HTML table, атрибут runat которого равен "server". Групповой шаблон может затем содержать элемент управления ASP.NET TableRow (или элемент HTML tr). Шаблон элемента может содержать отдельные элементы управления, имеющиеся внутри элемента управления ASP.NET TableCell (или элемента HTML td).

Для задания привязанного к данным пользовательского интерфейса, который позволяет пользователям изменять существующие элементы данных, можно использовать шаблон EditItemTemplate. Для задания привязанного к данным пользовательского интерфейса, который позволяет пользователям добавлять новые элементы данных, можно использовать шаблон InsertItemTemplate. Дополнительные сведения см. в пункте Изменение данных далее в этом разделе.

Доступные шаблоны

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

  • LayoutTemplate
    Задает корневой шаблон, который определяет основной макет элемента управления. Содержит объект местозаполнителя, такой как элемент строки таблицы (tr), div, или span. Этот элемент будет заменен на содержимое, которое задается в шаблоне ItemTemplate или GroupTemplate. Он также может содержать объект DataPager.

  • ItemTemplate
    Задает привязанное к данным содержимое, отображаемое для отдельных элементов.

  • ItemSeparatorTemplate
    Задает содержимое, отображаемое между отдельными элементами.

  • GroupTemplate
    Задает содержимое для группового макета. Содержит объект местозаполнителя, такой как ячейка таблицы (td), div, или span, который будет заменен содержимым, заданным в других шаблонах, таких как ItemTemplate и EmptyItemTemplate.

  • GroupSeparatorTemplate
    Задает содержимое, отображаемое между группами элементов.

  • EmptyItemTemplate
    Задает содержимое, отображаемое для пустого элемента, когда используется шаблон GroupTemplate. Например, если свойство GroupItemCount равно 5, а общее число элементов, возвращаемых из источника данных, равно 8, то последняя строка данных, отображаемая элементом управления ListView, будет содержать три элемента, как определено шаблоном ItemTemplate, и два элемента, как определено шаблоном EmptyItemTemplate.

  • EmptyDataTemplate
    Задает содержимое, которое выводится, если источник данных не возвращает данные.

  • SelectedItemTemplate
    Задает содержимое, которое отображается для выбранного элемента данных, чтобы отделить выбранный элемент от других выведенных элементов.

  • AlternatingItemTemplate
    Задает содержимое, которое отображается для чередующихся элементов, чтобы облегчить различение последовательных элементов.

  • EditItemTemplate
    Задает содержимое, которое выводится при изменении элемента. Для изменяемого элемента данных вместо шаблона ItemTemplate отображается шаблон EditItemTemplate.

  • InsertItemTemplate
    Задает содержимое, которое выводится при вставке элемента. Вместо шаблонаItemTemplate отображается шаблон InsertItemTemplate либо в начале элементов, выводимых элементом управления ListView, либо в конце. Место отображения шаблона InsertItemTemplate можно задать при помощи свойства InsertItemPosition элемента управления ListView.

Создание шаблонов элементов

В следующем примере показана базовая структура шаблона элемента.

<asp:ListView runat="server" ID="ListView1" 
    DataSourceID="SqlDataSource1">
  <LayoutTemplate>
    <table runat="server" id="table1" runat="server" >
      <tr runat="server" id="itemPlaceholder" ></tr>
    </table>
  </LayoutTemplate>
  <ItemTemplate>
    <tr runat="server>
      <td runat="server">
        <%-- Data-bound content. --%>
        <asp:Label ID="NameLabel" runat="server" 
          Text='<%#Eval("Name") %>' />
      </td>
    </tr>
  </ItemTemplate>
</asp:ListView>

Для отдельного отображения элементов необходимо добавить серверный элемент управления к шаблону LayoutTemplate и установить свойство элемента управления ID на itemPlaceholder. Этот элемент управления является только местозаполнителем для других шаблонов, обычно шаблона ItemTemplate. В результате, во время выполнения этот элемент управления будет заменен содержимым из других шаблонов.

Bb398790.alert_note(ru-ru,VS.90).gifПримечание.

Значение свойства ID, которое используется для идентификации контейнера элемента, можно изменять, присвоив свойству ItemPlaceholderID новое значение.

После задания шаблона макета необходимо добавить шаблон ItemTemplate, который обычно содержит элементы управления для отображения привязанного к данным содержимого. Применяя метод Eval для привязки элементов управления к значениям из источника данных, можно настроить разметку на использование для отображения каждого элемента. Дополнительные сведения о методе Eval см. в разделе Общие сведения о выражениях для привязки данных.

Используя шаблон ItemSeparatorTemplate, который определяет содержимое, выводимое между элементами, можно задать отображение дополнительного содержимого.

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

ListView с использованием нескольких строк для элемента

В следующем примере демонстрируется создание макета.

<asp:ListView runat="server" ID="EmployeesListView" 
    DataSourceID="EmployeesDataSource" 
    DataKeyNames="EmployeeID">
  <LayoutTemplate>
    <table cellpadding="2" runat="server" id="tblEmployees" 
        style="width:460px">
      <tr runat="server" id="itemPlaceholder">
      </tr>
    </table>
    <asp:DataPager runat="server" ID="DataPager" PageSize="3">
      <Fields>
        <asp:NumericPagerField
          ButtonCount="5"
          PreviousPageText="<--"
          NextPageText="-->" />
      </Fields>
    </asp:DataPager>
  </LayoutTemplate>
  <ItemTemplate>
     <tr runat="server">
       <td valign="top" colspan="2" align="center" 
           class="EmployeeName">
         <asp:Label ID="FirstNameLabel" runat="server" 
           Text='<%#Eval("FirstName") %>' />
         <asp:Label ID="LastNameLabel" runat="server" 
           Text='<%#Eval("LastName") %>' />
       </td>
     </tr>
     <tr style="height:72px" runat="server">
       <td valign="top" class="EmployeeInfo">
         <asp:Label ID="JobTitleLabel" runat="server" 
             Text='<%#Eval("JobTitle") %>' />
         <br />
         <asp:HyperLink ID="EmailAddressLink" runat="server" 
             Text='<%#Eval("EmailAddress") %>'  
             href='<%#"mailto:" + Eval("EmailAddress") %>' />
         <br />
         <asp:Label ID="PhoneLabel" runat="server" 
             Text='<%#Eval("Phone") %>' />
       </td>
       <td valign="top" class="EmployeeAddress">
         <asp:Label ID="AddressLine1Label" runat="server" 
             Text='<%#Eval("AddressLine1") %>' />
         <br />
         <asp:Panel ID="AddressLine2Panel" runat="server" 
            Visible='<%#Eval("AddressLine2").ToString() != String.Empty %>'>
         <asp:Label ID="AddressLine2Label" runat="server" 
            Text='<%#Eval("AddressLine2").ToString()%>'  />
         <br />
         </asp:Panel>
         <asp:Label ID="CityLabel" runat="server" 
           Text='<%#Eval("City") %>' />,
         <asp:Label ID="StateProvinceNameLabel" runat="server" 
           Text='<%#Eval("StateProvinceName") %>' />
         <asp:Label ID="PostalCodeLabel" runat="server" 
           Text='<%#Eval("PostalCode") %>' />
         <br />
         <asp:Label ID="CountryRegionNameLabel" runat="server" 
           Text='<%#Eval("CountryRegionName") %>' />
       </td>
     </tr>
   </ItemTemplate>
</asp:ListView>

Создание группового шаблона

В следующем примере демонстрируется создание группового шаблона.

<asp:ListView runat="server" ID="ListView1" 
    DataSourceID="SqlDataSource1" 
    GroupItemCount="5">
  <LayoutTemplate>
    <table runat="server" id="table1">
      <tr runat="server" id="groupPlaceholder">
      </tr>
    </table>
  </LayoutTemplate>
  <GroupTemplate>
    <tr runat="server" id="tableRow">
      <td runat="server" id="itemPlaceholder" />
    </tr>
  </GroupTemplate>
  <ItemTemplate>
    <td runat="server">
      <%-- Data-bound content. --%>
      <asp:Label ID="NameLabel" runat="server" 
          Text='<%#Eval("Name") %>' />
    </td>
  </ItemTemplate>
</asp:ListView>

Для отображения элементов в виде групп необходимо использовать серверный элемент управления в шаблоне LayoutTemplate как местозаполнитель для группы. Например, можно использовать элемент управления TableRow. Установите свойство элемента управления местозаполнителя ID на groupPlaceholder. Во время выполнения этот элемент управления местозаполнителя будет заменен на содержимое шаблона GroupTemplate.

Затем добавьте местозаполнитель и установите его свойство ID на itemPlaceholder. Этот элемент управления является только местозаполнителем для других шаблонов, обычно шаблона ItemTemplate. В результате, во время выполнения этот элемент управления будет заменен содержимым из других шаблонов. Содержимое повторяется столько раз, сколько установлено свойством GroupItemCount элемента управления ListView.

Наконец, добавьте шаблон ItemTemplate с привязанным к данным содержимым, отображаемым внутри содержащего элемента управления для каждого элемента.

Bb398790.alert_note(ru-ru,VS.90).gifПримечание.

Значение свойства ID, которое используется для идентификации контейнера элемента, можно изменять, присвоив свойству GroupPlaceholderID новое значение.

Используя шаблон ItemSeparatorTemplate, можно задавать разделитель между элементами. Используя свойство GroupSeparatorTemplate, можно задавать разделитель между группами.

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

Несколько элементов для строки в элементе управления ListView

В следующем примере демонстрируется создание макета.

<asp:ListView runat="server" ID="ProductsListView"
    GroupItemCount="3"
    DataSourceID="ProductsSqlDataSource" DataKeyNames="ProductID">
  <LayoutTemplate>
    <table cellpadding="2" runat="server"
           id="tblProducts" style="height:320px">
      <tr runat="server" id="groupPlaceholder">
      </tr>
    </table>
    <asp:DataPager runat="server" ID="DataPager"
                   PageSize="9">
       <Fields>
         <asp:NumericPagerField ButtonCount="3"
              PreviousPageText="<--"
              NextPageText="-->" />
       </Fields>
    </asp:DataPager>
  </LayoutTemplate>
  <GroupTemplate>
    <tr runat="server" id="productRow"
        style="height:80px">
      <td runat="server" id="itemPlaceholder">
      </td>
    </tr>
  </GroupTemplate>
  <ItemTemplate>
    <td valign="top" align="center" style="width:100" runat="server">
      <asp:Image ID="ProductImage" runat="server"
           ImageUrl='<%#"~/images/thumbnails/" + 
               Eval("ThumbnailPhotoFileName") %>'
           Height="49" /><br />
      <asp:HyperLink ID="ProductLink" runat="server"
           Target="_blank" Text='<% #Eval("Name")%>'
           href='<%#"ShowProduct.aspx?ProductID=" + 
              Eval("ProductID") %>' />
    </td>
  </ItemTemplate>
</asp:ListView>

К началу

Разбиение данных по страницам

Чтобы разрешить пользователям просматривать страницы данных в элементе управления ListView, можно использовать элемент управления DataPager. Элемент управления DataPager может находиться внутри шаблона LayoutTemplate или на странице вне элемента управления ListView. Если элемент управления DataPager не находится в элементе управления ListView, то необходимо установить свойство PagedControlID на идентификатор элемента управления ListView.

Элемент управления DataPager поддерживает пользовательский интерфейс с встроенной функцией разбиения по страницам. Можно использовать объект NumericPagerField, который позволяет пользователям выбирать страницу данных по номеру страницы. Также можно использовать объект NextPreviousPagerField. Он позволяет пользователям перемещаться по страницам данных на одну страницу или переходить к первой или последней странице данных. Размер страниц данных устанавливается при помощи свойства PageSize элемента управления DataPager. В одном элементе управления DataPager можно использовать один или несколько объектов поля навигатора.

Также можно создавать пользовательский интерфейс с пользовательским разбиением страниц, используя объект TemplatePagerField. В шаблоне TemplatePagerField можно создавать ссылки на элемент управления DataPager, используя свойство Container. Это свойство предоставляет доступ к свойствам элемента управления DataPager. Эти свойства включают начальный индекс строки, размер страницы и общее число строк, в данный момент привязанных к элементу управления ListView.

Следующий пример показывает класс DataPager, включенный в шаблон LayoutTemplate элемента управления ListView.

<asp:ListView runat="server" ID="ListView1" 
    DataSourceID="SqlDataSource1">
  <LayoutTemplate>
    <table runat="server" id=" table1">
      <tr runat="server" id="itemPlaceholder">
      </tr>
    </table>
    <asp:DataPager runat="server" ID="DataPager" PageSize="5">
        <Fields>
          <asp:NumericPagerField ButtonCount="10"
               PreviousPageText="<--"
               NextPageText="-->" />
        </Fields>
    </asp:DataPager>
  </LayoutTemplate>
  <ItemTemplate>
    <tr runat="server">
      <%-- Data-bound content. --%>
    </tr>
  </ItemTemplate>
</asp:ListView>

Следующая иллюстрация показывает макет, который отображает ссылки на страницы данных на основе номера страницы, используя объект NumericPagerField.

Использование объекта NumericPagerField

В следующем примере демонстрируется создание макета.

<asp:DataPager runat="server" ID="DataPager" PageSize="10">
  <Fields>
    <asp:NumericPagerField ButtonCount="10"
         CurrentPageLabelCssClass="CurrentPage"
         NumericButtonCssClass="PageNumbers"
         NextPreviousButtonCssClass="PageNumbers" NextPageText=" > "
         PreviousPageText=" < " />
  </Fields>
</asp:DataPager>

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

Использование объекта TemplatePagerField

Следующий пример показывает, как создать пользовательский интерфейс с разбиением по страницам.

<asp:DataPager runat="server" ID="EmployeesDataPager" PageSize="8">
  <Fields>
    <asp:TemplatePagerField>
      <PagerTemplate>
        &nbsp;
        <asp:TextBox ID="CurrentRowTextBox" runat="server"
             AutoPostBack="true"
             Text="<%# Container.StartRowIndex + 1%>" 
             Columns="1" 
             style="text-align:right" 
             OnTextChanged="CurrentRowTextBox_OnTextChanged" />
        to
        <asp:Label ID="PageSizeLabel" runat="server" Font-Bold="true"
             Text="<%# Container.StartRowIndex + Container.PageSize > Container.TotalRowCount ? Container.TotalRowCount : Container.StartRowIndex + Container.PageSize %>" />
        of
        <asp:Label ID="TotalRowsLabel" runat="server" Font-Bold="true"
             Text="<%# Container.TotalRowCount %>" />
      </PagerTemplate>
    </asp:TemplatePagerField>
    <asp:NextPreviousPagerField 
         ShowFirstPageButton="true" ShowLastPageButton="true"
         FirstPageText="|<< " LastPageText=" >>|"
         NextPageText=" > " PreviousPageText=" < " />
  </Fields>
</asp:DataPager>

Следующий пример показывает обработчик событий для события TextChanged элемента управления TextBox, который включен в шаблон TemplatePagerField. Код в обработчике переходит к элементу данных, указанному пользователем.

Protected Sub CurrentRowTextBox_OnTextChanged(ByVal sender As Object, _
        ByVal e As EventArgs) 
    Dim t As TextBox = CType(sender, TextBox)
    Dim pager As DataPager = _
        CType(EmployeesListView.FindControl("EmployeesDataPager"), _
        DataPager)
    pager.SetPageProperties(Convert.ToInt32(t.Text) - 1, _
        pager.PageSize, True)
End Sub
protected void CurrentRowTextBox_OnTextChanged(object sender, 
    EventArgs e)
{
    TextBox t = (TextBox)sender;
    DataPager pager = 
        (DataPager)EmployeesListView.FindControl("EmployeesDataPager");
    pager.SetPageProperties(Convert.ToInt32(t.Text) - 1, 
         pager.PageSize, true);
}

К началу

Сортировка данных

Данные, выведенные в элементе управления ListView, можно сортировать, добавляя кнопку к шаблону LayoutTemplate и устанавливая свойство кнопки CommandName на "Sort". Установите для свойства CommandArgument кнопки имя столбца, по которому нужно выполнить сортировку. Повторный щелчек по ссылке столбца переключает направление сортировке от Ascending к Descending.

В свойстве CommandArgument кнопки Sort можно указать несколько имен столбцов. Однако элемент управления ListView применяет направление сортировки ко всему списку столбцов. В результате при изменении направления сортировки оно применяется только к последнему столбцу в списке. Например, если свойство содержит CommandArgument столбцы "LastName, FirstName", повторное нажатие кнопки Sort приведет к появлению выражения сортировки типа "LastName, FirstName ASC" или "LastName, FirstName DESC".

Следующий пример показывает элемент управления ListView, который включает кнопку Sort для сортировки данных по фамилии.

<asp:ListView runat="server" ID="ListView1" DataSourceID="SqlDataSource1">
  <LayoutTemplate>
    <asp:LinkButton runat="server" ID="SortButton" 
         Text="Sort" CommandName="Sort" CommandArgument="LastName" />
    <table runat="server" id="table1">
      <tr runat="server" id="itemPlaceholder">
      </tr>
    </table>
    <asp:DataPager runat="server" ID="DataPager" PageSize="20">
        <Fields>
          <asp:NumericPagerField ButtonCount="10"
               PreviousPageText="<--"
               NextPageText="-->" />
        </Fields>
    </asp:DataPager>
  </LayoutTemplate>
  <ItemTemplate>
    <tr runat="server">
      <td><asp:Label runat="server" ID="FirstNameLabel" 
               Text='<%# Eval("FirstName")' /></td>
      <td><asp:Label runat="server" ID="LastNameLabel" 
               Text='<%# Eval("LastName")' /></td>
    </tr>
  </ItemTemplate>
</asp:ListView>

Динамическая установка выражения сортировки

Можно создать пользовательскую сортировку, динамически установив выражение сортировки элемента управления ListView. Для этого вызовите метод Sort или обработайте событие Sorting.

В следующем примере показан обработчик для события Sorting. Код использует одно и то же направление сортировки для всех столбцов в свойстве SortExpression.

Protected Sub ContactsListView_Sorting(ByVal sender As Object, _
        ByVal e As ListViewSortEventArgs)

    If (String.IsNullOrEmpty(e.SortExpression)) Then Return

    Dim direction As String = ""
    If Not (ViewState("SortDirection") Is Nothing) Then
        direction = ViewState("SortDirection").ToString()
    End If
    
    If direction = "ASC" Then
        direction = "DESC"
    Else
        direction = "ASC"
    End If

    ViewState("SortDirection") = direction

    Dim sortColumns As String() = e.SortExpression.Split(","c)
    Dim sortExpression As String = sortColumns(0) & " " & direction
    Dim i As Integer
    For i = 1 To sortColumns.Length - 1
        sortExpression += ", " & sortColumns(i) & " " & direction
    Next i
    e.SortExpression = sortExpression
    
  End Sub
protected void EmployeesListView_OnSorting(object sender, 
        ListViewSortEventArgs e)
{
    if (String.IsNullOrEmpty(e.SortExpression)) { return; }
    string direction = "";
    if (ViewState["SortDirection"] != null)
        direction = ViewState["SortDirection"].ToString();

    if (direction == "ASC")
        direction = "DESC";
    else
        direction = "ASC";

    ViewState["SortDirection"] = direction;

    string[] sortColumns = e.SortExpression.Split(',');
    string sortExpression = sortColumns[0] + " " + direction;
    for (int i = 1; i < sortColumns.Length; i++)
        sortExpression += ", " + sortColumns[i] + " " + direction;
    e.SortExpression = sortExpression;
}

К началу

Изменение данных

Для элемента управления ListView можно создавать шаблоны, которые позволяют пользователям редактировать, вставлять или удалять отдельные элементы данных.

Чтобы разрешить пользователям редактировать элемент данных, можно добавить шаблон EditItemTemplate к элементу управления ListView. Когда элемент переключен в режим редактирования, элемент управления ListView выводит элемент, используя шаблон редактирования. Шаблон должен включать привязанные к данным элементы управления, в которых пользователь может редактировать значения. Например, шаблон может включать текстовые поля, в которых пользователи могут редактировать существующие значения.

Чтобы разрешить пользователям вставлять новый элемент данных, можно добавить шаблон InsertItemTemplate к элементу управления ListView. Как и в случае с шаблоном редактирования, шаблон вставки должен включать привязанные к данным элементы управления, которые позволяют производить ввод данных. Шаблон InsertItemTemplate отображается либо в начале, либо в конце выведенных элементов. Место отображения шаблона InsertItemTemplate можно задать при помощи свойства InsertItemPosition элемента управления ListView.

Обычно требуется добавить к шаблонам кнопки, чтобы позволить пользователям определить, какое действие они хотят произвести. Например, можно добавить к шаблону элемента кнопку Delete, чтобы позволить пользователям удалять этот элемент.

Можно добавить к шаблону элемента кнопку Edit, чтобы позволить пользователю переходить в режим редактирования. К шаблонуEditItemTemplate можно добавить кнопку Update, которая позволяет пользователям сохранять изменения. Также можно добавить кнопку Cancel, которая позволяет пользователям перейти обратно к режиму отображения, не сохраняя изменения.

Установка действия, которое будет производить кнопка, осуществляется при помощи свойства CommandName. Следующая таблица содержит значения для свойства CommandName, для которого элемент управления ListView имеет встроенные варианты поведения.

  • Select
    Выводит содержимое шаблона SelectedItemTemplate для выбранного элемента.

  • Insert
    В шаблоне InsertItemTemplate определяет, что содержимое привязанных к данным элементов управления должно быть сохранено в источнике данных.

  • Edit
    Определяет, что элемент управления ListView должен перейти в режим редактирования и выводить элемент при помощи шаблона EditItemTemplate.

  • Update
    В шаблоне EditItemTemplate определяет, что содержимое привязанных к данным элементов управления должно быть сохранено в источнике данных.

  • Delete
    Удаляет элемент из источника данных.

  • Cancel
    Отменяет текущее действие. Когда отображается шаблон EditItemTemplate, то отмена действия выводит шаблон SelectedItemTemplate, если элемент выбран в данный момент; в противном случае выводится шаблон ItemTemplate. Когда отображается шаблон InsertItemTemplate, то отмена действия выводит пустой шаблон InsertItemTemplate.

  • (Пользовательское значение)
    По умолчанию никаких действий не выполняется. Свойству CommandName можно присвоить пользовательское значение. В событии ItemCommand затем можно проверить значение и произвести действие.

Пример элемента управления ListView, позволяющего редактировать, удалять и вставлять элементы, см. в разделе Пошаговое руководство. Изменение данных с помощью серверного веб-элемента управления ListView.

К началу

Применение стилей к элементам ListView

Элемент управления ListView не поддерживает свойства стилей, такие как BackColor и Font. Чтобы применить стили к элементу управления ListView, необходимо использовать классы таблиц каскадных стилей (CSS) или встроенные элементы стилей для отдельных элементов управления внутри шаблонов ListView.

Некоторые объекты поддерживают свойства, которые позволяют применять стили к выходным элементам. Например, объект NumericPagerField содержит следующие свойства:

  • Свойство NumericButtonCssClass, которое позволяет определять имя класса CSS для кнопок, которые перемещают к страницам данных по номеру страницы.

  • Свойство CurrentPageLabelCssClass, которое позволяет определять имя класса CSS для номера текущей страницы.

  • Свойство NextPreviousButtonCssClass, которое позволяет определять имя класса CSS для кнопок, которые перемещают к следующей или предыдущей группе цифровых кнопок.

К началу

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

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

Класс

Описание

ListView

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

ListViewItem

Объект, который представляет элемент в элементе управления ListView.

ListViewDataItem

Объект, который представляет элемент данных в элементе управления ListView.

ListViewItemType

Перечисление, которое определяет функцию элементов в элементе управления ListView.

DataPager

Серверный элемент управления, который предоставляет функциональную возможность разбиения по страницам для элементов управления, реализующих интерфейс IPageableItemContainer, такой как элемент управления ListView.

NumericPagerField

Поле DataPager, которое позволяет пользователям выбирать страницу данных по номеру страницы.

NextPreviousPagerField

Поле DataPager, которое позволяет пользователям перемещаться по страницам данных на одну страницу за раз или переходить сразу к первой или последней странице данных.

TemplatePagerField

Поле DataPager, которое позволяет пользователям создавать собственный интерфейс с разбиением по страницам.

К началу

Примеры кода

Следующие разделы содержат примеры кода для использования элемента управления ListView.

Практические и пошаговые руководства

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

Пошаговое руководство. Изменение данных с помощью серверного веб-элемента управления ListView

К началу

См. также

Основные понятия

Общие сведения о серверных веб-элементах управления ASP.NET с привязкой к данным

Привязка к базам данных

Общие сведения об элементах управления источниками данных

Другие ресурсы

Глобализация и локализация ASP.NET

Специальные возможности ASP.NET