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 visual C# .NET, dodaj kod, aby uzyskać dostęp do widoku Sales Totals by Amount (Sumy sprzedaży według kwoty ) z bazy danych Northwind , a następnie powiązać widok Sales Totals by Amount (Sumy sprzedaży według kwoty ) do usługi DataGrid. W tym przykładzie użyto ItemDataBound zdarzenia usługi DataGrid do sumy SaleAmount pola podczas powiązania 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ą platformy .NET programu Microsoft Visual Basic w tym artykule, zobacz How to create a summary row for a DataGrid in ASP.NET using Visual Basic .NET (Jak utworzyć wiersz podsumowania dla usługi DataGrid w programie ASP.NET przy użyciu platformy .NET języka Visual Basic).

Ten artykuł dotyczy następującej przestrzeni System.Data.SqlClientnazw biblioteki klas programu .NET Framework.

Wymagania

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

  • Windows
  • .NET Framework
  • Visual Studio .NET
  • Internet Information Services (IIS)
  • SQL Server 7.0 lub nowszy oraz baza danych Northwind

Uwaga 16.

Baza danych Northwind jest dołączona do programu SQL Server 7.0 lub nowszego.

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

W tej sekcji utworzysz projekt .NET języka Visual C#, wybierz format usługi DataGrid, a następnie ustaw usługę DataGrid, aby wyświetlić stopkę. Ponieważ używasz stopki do wyświetlania podsumowania, ważne jest, aby wyświetlić stopkę.

Uwaga 16.

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

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

  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 wyświetlane wygaszone). Pole Lokalizacja zawiera tekst (lub podobny) http://localhost/WebApplication1.

    Zmień lokalizację na http://localhost/SummaryRow, a następnie kliknij przycisk OK. Zostanie utworzony 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ę Kolorowa 1, a następnie kliknij przycisk OK.

  8. Kliknij prawym przyciskiem myszy pozycję DataGrid, a następnie kliknij polecenie 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 Sales Totals by Amount (Sumy sprzedaży według kwoty ) znajdującego się w bazie danych Northwind , aby obliczyć podsumowanie SaleAmount pola. Widok Sales Totals by Amount (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 polecenie Wyświetl kod.

  2. W oknie kodu 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 Page_Load zdarzeniu 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 dla danego środowiska.

  6. Rozwiń region kodu wygenerowanego przez projektanta formularzy sieci Web, 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 zgłaszane po tym, jak element jest danymi powiązanymi z kontrolką DataGrid. To zdarzenie daje ostatnią możliwość uzyskania dostępu do elementu danych, zanim pojawi się on na kliencie. Po wystąpieniu tego zdarzenia element danych ma wartość null i nie jest już dostępny.

Dla każdego powiązanego ItemType elementu należy sprawdzić właściwość . 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. Gdy wartość ItemType to Footer, otrzymasz sumę ze wszystkich wierszy. W związku z tym przypisujesz wartość zmiennej podsumowania do wartości tekstowej ostatniej komórki.

Uwaga 16.

Ten kod używa wyrażeń formatowania, aby zapewnić jednolity wygląd SaleAmount 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;
    }
}

Kompilowanie projektu i testowanie kodu

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

Informacje