Создание сводной строки для DataGrid в ASP.NET с помощью Visual Basic .NET

В этой пошаговой статье описывается создание сводной строки для элемента управления DataGrid в ASP.NET с помощью Visual Basic .NET.

Исходная версия продукта: Visual Basic .NET
Исходный номер базы знаний: 313154

Сводка

В этой статье вы создадите проект .NET на Visual Basic, добавьте код для доступа к представлению Sales Totals by Amount из базы данных Northwind , а затем привязываете представление Sales Totals by Amount к DataGrid. В этом примере событие DataGrid используется ItemDataBound для итогового значения поля SaleAmount при привязке данных к DataGrid. В этом примере также используется нижний колонтитул DataGrid для отображения сводки или итогов.

В этой статье описывается пространство System.Data.SqlClientимен библиотеки классов Microsoft платформа .NET Framework .

Примечание.

Версию microsoft Visual C# для .NET этой статьи см. в разделе 326339.

Требования

В следующем списке перечислены рекомендуемые оборудование, программное обеспечение, сетевая инфраструктура и пакеты обновления, которые требуются:

  • Microsoft Windows
  • Microsoft .NET Framework
  • Microsoft Visual Studio .NET
  • Microsoft IIS (IIS)
  • Microsoft SQL Server 7.0 или более поздней версии и база данных Northwind

Примечание.

База данных Northwind входит в состав SQL sServer 7.0 и более поздних версий.

Создание проекта .NET visual Basic и добавление DataGrid

В этом разделе описано, как создать проект .NET на Visual Basic, выбрать формат для DataGrid, а затем задать DataGrid для отображения нижнего колонтитула. Так как вы используете нижний колонтитул для отображения сводки, важно отобразить нижний колонтитул.

Примечание.

По умолчанию свойство ShowFooter отключено.

  1. Запустите Visual Studio .NET. Откроется интегрированная среда разработки Visual Studio .NET.

  2. В меню Файл выберите пункт Создать и затем пункт Проект.

  3. В диалоговом окне Новый проект щелкните Проекты Visual Basic в разделе Типы проектов, а затем выберите ASP.NET веб-приложение в разделе Шаблоны.

  4. Обратите внимание, что в диалоговом окне Новый проект поле Имя недоступно (оно отображается неактивно). Поле Расположение содержит следующий текст (или аналогичный текст):
    http://localhost/WebApplication1

    Измените расположение на http://localhost/SummaryRowи нажмите кнопку ОК. Создается новый проект, который включает веб-форму с именем WebForm1.aspx.

  5. В Обозреватель решений дважды щелкните WebForm1.aspx.

  6. Перетащите элемент управления DataGrid из панели элементов в форму.

  7. Щелкните правой кнопкой мыши элемент управления DataGrid и выберите пункт Автоформат. Щелкните Цветной 1 и нажмите кнопку ОК.

  8. Щелкните правой кнопкой мыши элемент управления DataGrid и выберите пункт Свойства. В диалоговом окне Свойства измените значение свойства ShowFooter на True.

Написание кода для доступа к базе данных

В этом разделе вы используете представление "Итоги продаж по сумме", которое находится в базе данных Northwind , чтобы вычислить сводку по полю SaleAmount. Представление Итоги продаж по сумме включает поля Orders, CompanyName и SaleAmount.

  1. В интегрированной среде разработки щелкните правой кнопкой мыши веб-форму и выберите пункт Просмотреть код.

  2. В окне кода программной части добавьте следующий код в начало страницы:

    Imports System.Data
    Imports System.Data.SqlClient
    
  3. Добавьте следующий код в раздел объявления класса:

    Private myTotal As System.Double 'This variable tracks the running total.
    
  4. Замените код в событии Page_Load следующим кодом:

    Private Sub Page_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        'Connect to the database, retrieve data, and then fill the data in the DataSet.
        Dim myConnection As New SqlConnection("server=(local)\netsdk;"Integrated Security=SSPI" & _
        pwd=;database=northwind")
        Dim myDataAdapter As New SqlDataAdapter("SELECT top 15 [OrderID], [CompanyName], " & _
        "[SaleAmount] FROM [Northwind].[dbo].[Sales Totals by Amount]", myConnection)
        Dim myDataSet As New DataSet()
        myDataAdapter.Fill(myDataSet)
        'Set the DataSource for the DataGrid, and then bind the data.
        DataGrid1.DataSource = myDataSet
        DataGrid1.DataBind()
    End Sub
    
  5. Измените строка подключения в соответствии с вашей средой.

Использование события ItemDataBound

Событие ItemDataBound возникает после того, как элемент привязывается к элементу управления DataGrid. Это событие предоставляет последнюю возможность доступа к элементу данных, прежде чем он появится на клиенте. После возникновения этого события элемент данных будет иметь значение NULL и больше недоступен.

Для каждого элемента, привязанного к данным, необходимо проверка ItemType свойство . Если ItemType имеет тип Item или AlternatingItem, вы получите значение из последней ячейки элемента, которая содержит значение SaleAmount. В этом примере это значение добавляется в выполняемую сводную переменную. ItemType Если имеет значение Footer, вы получите итог из всех строк. Таким образом, значение суммарной переменной присваивалось текстовому значению последней ячейки.

Примечание.

В этом коде используются выражения форматирования для обеспечения единообразного поиска данных SaleAmount.

Добавьте следующий код после Page_Load события:

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
    Select Case e.Item.ItemType
    Case ListItemType.AlternatingItem, ListItemType.Item
    'Calculate total for the field of each row and alternating row.
    myTotal += CDbl(e.Item.Cells(2).Text)
    'Format the data, and then align the text of each cell to the right.
    e.Item.Cells(2).Text = Format(CDbl(e.Item.Cells(2).Text), "##,##0.00")
    e.Item.Cells(2).Attributes.Add("align", "right")
    Case ListItemType.Footer
    'Use the footer to display the summary row.
    e.Item.Cells(1).Text = "Total Sales"
    e.Item.Cells(1).Attributes.Add("align", "left")
    e.Item.Cells(2).Attributes.Add("align", "right")
    e.Item.Cells(2).Text = myTotal.ToString("c")
    End Select
End Sub

Сборка проекта и тестирование кода

  1. В меню Файл выберите команду Сохранить все.
  2. On the Build menu, click Build Solution.
  3. В Обозреватель решений щелкните правой кнопкой мыши страницу .aspx и выберите пункт Просмотр в браузере. В браузере появится страница .aspx, а в DataGrid отображаются столбцы OrderID, CompanyName и SaleAmount. Обратите внимание, что в нижнем колонтитуле отображается итог столбца SaleAmount.

Ссылки