Créer une ligne récapitulative pour un contrôle DataGrid à l’aide de Visual C# dans ASP.NET

Cet article explique comment créer une ligne récapitulative pour un contrôle DataGrid à l’aide de Visual C# dans ASP.NET.

Version d’origine du produit : Visual C#
Numéro de la base de connaissances d’origine : 326339

Résumé

Dans cet article, vous allez créer un projet .NET Visual C#, ajouter du code pour accéder à la vue Ventes totales par montant à partir de la base de données Northwind , puis lier l’affichage Sales Totals by Amount à DataGrid. Cet exemple utilise l’événement ItemDataBound de la DataGrid pour additionner le SaleAmount champ lorsque vous liez les données au DataGrid. Cet exemple utilise également le pied de page du DataGrid pour afficher le résumé ou les totaux.

Pour obtenir une version Microsoft Visual Basic .NET de cet article, consultez How to create a summary row for a DataGrid in ASP.NET by using Visual Basic .NET.

Cet article fait référence à l’espace de noms System.Data.SqlClientde bibliothèque de classes .NET Framework suivant .

Configuration requise

La liste suivante décrit le matériel, les logiciels, l’infrastructure réseau et les Service Packs recommandés :

  • Windows
  • .NET Framework
  • Visual Studio .NET
  • Internet Information Services (IIS)
  • SQL Server 7.0 ou version ultérieure et la base de données Northwind

Remarque

La base de données Northwind est incluse dans SQL Server 7.0 et versions ultérieures.

Créer un projet Visual C# .NET et ajouter le contrôle DataGrid

Dans cette section, vous allez créer un projet Visual C# .NET, sélectionner un format pour DataGrid, puis définir dataGrid pour afficher le pied de page. Étant donné que vous utilisez le pied de page pour afficher le résumé, il est important d’afficher le pied de page.

Remarque

Par défaut, la propriété ShowFooter est désactivée.

  1. Démarrez Visual Studio .NET. L’environnement de développement intégré (IDE) Visual Studio .NET s’affiche.

  2. On the File menu, point to New, and then click Project.

  3. Dans la boîte de dialogue Nouveau projet , cliquez sur Projets Visual C# sous Types de projets, puis sur ASP.NET application web sous Modèles.

  4. Dans la boîte de dialogue Nouveau projet , notez que la zone Nom n’est pas disponible (elle apparaît grisée). La zone Emplacement contient le texte (ou similaire). http://localhost/WebApplication1

    Remplacez l’emplacement http://localhost/SummaryRowpar , puis cliquez sur OK. Un projet est créé, qui inclut un formulaire web nommé WebForm1.aspx.

  5. Dans Explorateur de solutions, double-cliquez sur WebForm1.aspx.

  6. Faites glisser un contrôle DataGrid de la boîte à outils vers le formulaire.

  7. Cliquez avec le bouton droit sur DataGrid, puis cliquez sur Format automatique. Cliquez sur Couleur 1, puis sur OK.

  8. Cliquez avec le bouton droit sur DataGrid, puis cliquez sur Propriétés. Dans la boîte de dialogue Propriétés , remplacez la valeur de la propriété ShowFooter par True.

Écrire du code pour accéder à la base de données

Dans cette section, vous utilisez la vue Ventes totales par montant qui se trouve dans la base de données Northwind pour calculer le résumé du SaleAmount champ. La vue Ventes totales par montant inclut les Orderschamps , CompanyNameet SaleAmount .

  1. Dans l’IDE Visual Studio .NET, cliquez avec le bouton droit sur le formulaire web, puis cliquez sur Afficher le code.

  2. Dans la fenêtre code-behind, ajoutez le code suivant en haut de la page :

    using System.Data.SqlClient;
    
  3. Ajoutez le code suivant dans la section déclaration de classe :

    private double myTotal; //This variable tracks the running total.
    
  4. Remplacez le code dans l’événement Page_Load par le code suivant :

    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. Modifiez le chaîne de connexion en fonction de votre environnement.

  6. Développez web Form Designer région de code générée, puis ajoutez l’instruction suivante dans la InitializeComponent fonction :

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

Utiliser l’événement ItemDataBound

L’événement ItemDataBound est déclenché une fois qu’un élément est lié à des données liées au contrôle DataGrid. Cet événement vous donne la dernière possibilité d’accéder à l’élément de données avant qu’il n’apparaisse sur le client. Une fois cet événement déclenché, l’élément de données est null et n’est plus disponible.

Pour chaque élément lié aux données, vous devez case activée la ItemType propriété . Si ItemType est de type Item ou AlternatingItem, vous recevez la valeur de la dernière cellule de l’élément, qui contient la SaleAmount valeur. Dans cet exemple, vous ajoutez cette valeur à la variable récapitulative en cours d’exécution. Lorsque a la ItemType valeur Footer, vous recevez le total de toutes les lignes. Par conséquent, vous affectez la valeur de la variable de résumé à la valeur de texte de la dernière cellule.

Remarque

Ce code utilise des expressions de mise en forme pour fournir une apparence uniforme pour les SaleAmount données.

Ajoutez le code suivant après l’événement 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;
    }
}

Générer le projet et tester le code

  1. Dans le menu Fichier, cliquez sur Enregistrer tout.
  2. Dans le menu Générer, cliquez sur Générer la solution.
  3. Dans Explorateur de solutions, cliquez avec le bouton droit sur la page .aspx, puis cliquez sur Afficher dans le navigateur. La page .aspx s’affiche dans le navigateur, et dataGrid affiche les colonnes OrderID, CompanyName et SaleAmount . Notez que le pied de page affiche le total de la colonne SaleAmount .

References