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

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

Исходная версия продукта: Visual C#
Исходный номер базы знаний: 326339

Сводка

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

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

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

Требования

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

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

Примечание.

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

Создание проекта .NET Visual C# и добавление элемента управления DataGrid

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

Примечание.

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

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

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

  3. В диалоговом окне Новый проект щелкните Проекты Visual C# в разделе Типы проектов, а затем выберите 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 . Представление Sales Totals by Amount (Итоги продаж по суммеOrders) включает поля , CompanyName, и SaleAmount .

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

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

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

    private double myTotal; //This variable tracks the running total.
    
  4. Замените код в событии Page_Load следующим кодом:

    private void Page_Load (object sender, System.EventArgs e)
    {
        //Connect to the database, retrieve data, and then fill the data in the DataSet.
        SqlConnection myConnection = new SqlConnection ("server=(local);uid=sa;" +
                        "pwd=password;database=northwind");
        SqlDataAdapter myDataAdapter = new SqlDataAdapter ("SELECT top 15 [OrderID], [CompanyName], " +
                        "[SaleAmount] FROM [Northwind].[dbo].[Sales Totals by Amount]", myConnection);
        DataSet myDataSet = new DataSet ();
        myDataAdapter.Fill (myDataSet);
    
        //Set the DataSource for the DataGrid, and then bind the data.
        DataGrid1.DataSource = myDataSet;
        DataGrid1.DataBind ();
    }
    
  5. Измените строка подключения в соответствии с вашей средой.

  6. Разверните веб-форму Designer созданной области кода, а затем добавьте следующую инструкцию в функциюInitializeComponent:

    this.DataGrid1.ItemDataBound
    += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
    

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

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

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

Примечание.

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

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

private void DataGrid1_ItemDataBound (object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
    switch ((int) (e.Item.ItemType))
    {
        case (int) ListItemType.Item:
        case (int) ListItemType.AlternatingItem:
            //Calculate total for the field of each row and alternating row.
            myTotal += Convert.ToDouble (e.Item.Cells[2].Text);
            //Format the data, and then align the text of each cell to the right.
            e.Item.Cells[2].Text = Convert.ToDouble (e.Item.Cells[2].Text).ToString ("##,##0.00");
            e.Item.Cells[2].Attributes.Add ("align", "right");
            break;
        case (int) 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");
            break;
    }
}

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

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

Ссылки