Freigeben über


Erstellen einer Zusammenfassungszeile für ein DataGrid-Steuerelement mithilfe von Visual C# in ASP.NET

In diesem Artikel wird beschrieben, wie Sie eine Zusammenfassungszeile für ein DataGrid-Steuerelement mithilfe von Visual C# in ASP.NET erstellen.

Originalproduktversion: Visual C#
Ursprüngliche KB-Nummer: 326339

Zusammenfassung

In diesem Artikel erstellen Sie ein Visual C#-.NET-Projekt, fügen Code für den Zugriff auf die Ansicht "Gesamtsummen nach Betrag " aus der Northwind-Datenbank hinzu und binden dann die Umsatzsummen nach Betragsansicht an das DataGrid. In diesem Beispiel wird das ItemDataBound Ereignis des DataGrid verwendet, um das SaleAmount Feld zu addieren, wenn Sie die Daten an das DataGrid binden. In diesem Beispiel wird auch die Fußzeile des DataGrid verwendet, um die Zusammenfassung oder die Summen anzuzeigen.

Eine Microsoft Visual Basic .NET-Version dieses Artikels finden Sie unter How to create a summary row for a DataGrid in ASP.NET by using Visual Basic .NET.

Dieser Artikel bezieht sich auf den folgenden .NET Framework Class Library-Namespace System.Data.SqlClient.

Anforderungen

In der folgenden Liste sind die empfohlenen Hardware-, Software-, Netzwerkinfrastruktur- und Service Packs aufgeführt, die erforderlich sind:

  • Windows
  • .NET Framework
  • Visual Studio .NET
  • Internetinformationsdienste (IIS)
  • SQL Server 7.0 oder höher und die Northwind-Datenbank

Notiz

Die Northwind-Datenbank ist in SQL Server 7.0 und höher enthalten.

Erstellen eines Visual C#-.NET-Projekts und Hinzufügen des DataGrid-Steuerelements

In diesem Abschnitt erstellen Sie ein Visual C#.NET-Projekt, wählen ein Format für das DataGrid aus, und legen Sie dann das DataGrid fest, um die Fußzeile anzuzeigen. Da Sie die Fußzeile zum Anzeigen der Zusammenfassung verwenden, ist es wichtig, dass Sie die Fußzeile anzeigen.

Notiz

Standardmäßig ist die ShowFooter-Eigenschaft deaktiviert.

  1. Starten Sie Visual Studio .NET. Die integrierte Entwicklungsumgebung (IDE) von Visual Studio .NET wird angezeigt.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Klicken Sie im Dialogfeld "Neues Projekt" unter "Projekttypen" auf "Visual C#-Projekte", und klicken Sie dann unter "Vorlagen" auf ASP.NET Webanwendung.

  4. Beachten Sie im Dialogfeld "Neues Projekt ", dass das Feld "Name " nicht verfügbar ist (es wird abgeblendet angezeigt). Das Feld "Speicherort" enthält den Text (oder ähnlich). http://localhost/WebApplication1

    Ändern Sie den Speicherort in http://localhost/SummaryRow, und klicken Sie dann auf OK. Es wird ein neues Projekt erstellt, das ein Webformular mit dem Namen WebForm1.aspx enthält.

  5. Doppelklicken Sie in Projektmappen-Explorer auf WebForm1.aspx.

  6. Ziehen Sie ein DataGrid-Steuerelement aus der Toolbox in das Formular.

  7. Klicken Sie mit der rechten Maustaste auf "DataGrid", und klicken Sie dann auf "AutoFormat". Klicken Sie auf "Farbig 1" und dann auf "OK".

  8. Klicken Sie mit der rechten Maustaste auf DataGrid, und klicken Sie dann auf "Eigenschaften". Ändern Sie im Dialogfeld Eigenschaften den Wert der ShowFooter-Eigenschaft in "True".

Schreiben von Code für den Zugriff auf die Datenbank

In diesem Abschnitt verwenden Sie die Ansicht "Umsatzsummen nach Betrag ", die sich in der Northwind-Datenbank befindet, um die Zusammenfassung für das SaleAmount Feld zu berechnen. Die Ansicht "Umsatzsummen nach Betrag" enthält die OrdersFelder , die CompanyNameFelder und SaleAmount

  1. Klicken Sie in der .NET-IDE von Visual Studio mit der rechten Maustaste auf das Webformular, und klicken Sie dann auf "Code anzeigen".

  2. Fügen Sie im CodeBehind-Fenster oben auf der Seite den folgenden Code hinzu:

    using System.Data.SqlClient;
    
  3. Fügen Sie den folgenden Code im Abschnitt "Klassendeklaration" hinzu:

    private double myTotal; //This variable tracks the running total.
    
  4. Ersetzen Sie den Code im Page_Load Ereignis durch den folgenden Code:

    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. Ändern Sie die Verbindungszeichenfolge entsprechend Ihrer Umgebung.

  6. Erweitern Sie den generierten Codebereich des Webformular-Designers, und fügen Sie dann die folgende Anweisung in der InitializeComponent Funktion hinzu:

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

Verwenden des ItemDataBound-Ereignisses

Das ItemDataBound Ereignis wird ausgelöst, nachdem ein Element an das DataGrid-Steuerelement gebunden ist. Dieses Ereignis bietet Ihnen die letzte Möglichkeit, auf das Datenelement zuzugreifen, bevor es auf dem Client angezeigt wird. Nachdem dieses Ereignis ausgelöst wurde, ist das Datenelement null und nicht mehr verfügbar.

Für jedes Element, das datengebunden ist, müssen Sie die ItemType Eigenschaft überprüfen. Wenn ItemType der Typ ist Item oder AlternatingItem, erhalten Sie den Wert aus der letzten Zelle des Elements, die den SaleAmount Wert enthält. In diesem Beispiel fügen Sie diesen Wert zur ausgeführten Zusammenfassungsvariable hinzu. Wenn dies der ItemType Grund ist Footer, erhalten Sie die Summe aus allen Zeilen. Daher weisen Sie dem Textwert der letzten Zelle den Wert der Zusammenfassungsvariable zu.

Notiz

Dieser Code verwendet Formatierungsausdrücke, um eine einheitliche Suche nach den SaleAmount Daten bereitzustellen.

Fügen Sie nach dem Page_Load Ereignis den folgenden Code hinzu:

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;
    }
}

Erstellen Des Projekts und Testen des Codes

  1. Klicken Sie im Menü Datei auf Alle speichern.
  2. Klicken Sie im Menü Build auf Projektmappe erstellen.
  3. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf die .aspx Seite, und klicken Sie dann im Browser auf "Anzeigen". Die .aspx Seite wird im Browser angezeigt, und DataGrid zeigt die Spalten "OrderID", " CompanyName" und " SaleAmount " an. Beachten Sie, dass in der Fußzeile die Summe der Spalte "SaleAmount " angezeigt wird.

References