Tworzenie wiersza podsumowania dla kontrolki DataGrid przy użyciu języka Visual C# w ASP.NET

W tym artykule opisano sposób tworzenia wiersza podsumowania dla kontrolki DataGrid przy użyciu języka Visual C# w ASP.NET.

Oryginalna wersja produktu: Visual C#
Oryginalny numer KB: 326339

Podsumowanie

W tym artykule utworzysz projekt platformy .NET w języku Visual C#, dodasz kod, aby uzyskać dostęp do widoku Sumy sprzedaży według kwoty z bazy danych Northwind , a następnie powiązasz widok Sumy sprzedaży według kwoty z usługą DataGrid. W tym przykładzie użyto ItemDataBound zdarzenia datagrid, aby zsumować SaleAmount pole po powiązaniu danych z usługą DataGrid. W tym przykładzie użyto również stopki usługi DataGrid do wyświetlenia podsumowania lub sum.

Aby zapoznać się z wersją programu Microsoft Visual Basic dla platformy .NET w tym artykule, zobacz How to create a summary row for a DataGrid in ASP.NET by using Visual Basic .NET (Jak utworzyć wiersz podsumowania dla usługi DataGrid w ASP.NET przy użyciu platformy .NET w języku Visual Basic).

W tym artykule opisano następującą przestrzeń nazw System.Data.SqlClientbiblioteki klas .NET Framework .

Wymagania

Na poniższej liście przedstawiono zalecany sprzęt, oprogramowanie, infrastrukturę sieciową i dodatki Service Pack, które są wymagane:

  • System Windows
  • .NET Framework
  • Visual Studio .NET
  • Oprogramowanie Internet Information Services (IIS)
  • SQL Server wersji 7.0 lub nowszej oraz bazy danych northwind

Uwaga

Baza danych Northwind jest dołączona do SQL Server 7.0 i nowszych.

Tworzenie projektu platformy .NET w języku Visual C# i dodawanie kontrolki DataGrid

W tej sekcji utworzysz projekt platformy .NET w języku Visual C#, wybierzesz format dla usługi DataGrid, a następnie ustawisz usługę DataGrid tak, aby wyświetlała stopkę. Ponieważ stopka jest używana do wyświetlania podsumowania, ważne jest, aby była wyświetlana stopka.

Uwaga

Domyślnie właściwość ShowFooter jest wyłączona.

  1. Uruchom program Visual Studio .NET. Zostanie wyświetlone zintegrowane środowisko programistyczne programu Visual Studio (IDE).

  2. W menu Plik wskaż polecenie Nowy, a następnie kliknij Projekt.

  3. W oknie dialogowym Nowy projekt kliknij pozycję Projekty Visual C# w obszarze Typy projektów, a następnie kliknij pozycję ASP.NET Aplikacja internetowa w obszarze Szablony.

  4. W oknie dialogowym Nowy projekt zwróć uwagę, że pole Nazwa jest niedostępne (jest wygaszone). Pole Lokalizacja zawiera tekst (lub podobny) http://localhost/WebApplication1.

    Zmień lokalizację na http://localhost/SummaryRow, a następnie kliknij przycisk OK. Tworzony jest nowy projekt zawierający formularz internetowy o nazwie WebForm1.aspx.

  5. W Eksplorator rozwiązań kliknij dwukrotnie WebForm1.aspx.

  6. Przeciągnij kontrolkę DataGrid z przybornika do formularza.

  7. Kliknij prawym przyciskiem myszy pozycję DataGrid, a następnie kliknij pozycję Autoformatuj. Kliknij pozycję Kolorowe 1, a następnie kliknij przycisk OK.

  8. Kliknij prawym przyciskiem myszy pozycję DataGrid, a następnie kliknij pozycję Właściwości. W oknie dialogowym Właściwości zmień wartość właściwości ShowFooter na True.

Pisanie kodu w celu uzyskania dostępu do bazy danych

W tej sekcji użyjesz widoku Sumy sprzedaży według kwoty znajdującego się w bazie danych Northwind , aby obliczyć podsumowanie SaleAmount pola. Widok Sumy sprzedaży według kwoty zawiera Orderspola , CompanyNamei SaleAmount .

  1. W środowisku IDE programu Visual Studio .NET kliknij prawym przyciskiem myszy formularz internetowy, a następnie kliknij pozycję Wyświetl kod.

  2. W oknie za kodem dodaj następujący kod w górnej części strony:

    using System.Data.SqlClient;
    
  3. Dodaj następujący kod w sekcji deklaracji klasy:

    private double myTotal; //This variable tracks the running total.
    
  4. Zastąp kod w zdarzeniu Page_Load następującym kodem:

    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. Zmodyfikuj parametry połączenia odpowiednio do środowiska.

  6. Rozwiń formularz internetowy Projektant wygenerowany region kodu, a następnie dodaj następującą instrukcję InitializeComponent w funkcji:

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

Używanie zdarzenia ItemDataBound

Zdarzenie ItemDataBound jest wywoływane po tym, jak element jest powiązany z kontrolką DataGrid. To zdarzenie daje ostatnią możliwość uzyskania dostępu do elementu danych przed jego wyświetleniem na kliencie. Po zgłoszeniu tego zdarzenia element danych ma wartość null i nie jest już dostępny.

Dla każdego elementu powiązanego z danymi należy sprawdzić właściwość ItemType . Jeśli ItemType jest typu Item lub AlternatingItem, otrzymasz wartość z ostatniej komórki elementu, która zawiera SaleAmount wartość. W tym przykładzie dodasz tę wartość do uruchomionej zmiennej podsumowania. ItemType Gdy wartość to Footer, otrzymasz sumę ze wszystkich wierszy. W związku z tym należy przypisać wartość zmiennej sumaryczne do wartości tekstowej ostatniej komórki.

Uwaga

Ten kod używa wyrażeń formatowania, aby zapewnić jednolity SaleAmount wygląd danych.

Dodaj następujący kod po zdarzeniu 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;
    }
}

Tworzenie projektu i testowanie kodu

  1. W menu Plik kliknij pozycję Zapisz wszystko.
  2. W menu Kompilacja kliknij pozycję Kompiluj rozwiązanie.
  3. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy stronę .aspx, a następnie kliknij pozycję Wyświetl w przeglądarce. Strona .aspx zostanie wyświetlona w przeglądarce, a w usłudze DataGrid zostaną wyświetlone kolumny OrderID, CompanyName i SaleAmount . Zwróć uwagę, że stopka wyświetla sumę kolumny SaleAmount .

Informacje