Comment créer une ligne récapitulative pour un DataGrid dans ASP.NET à l’aide de Visual Basic .NET

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

Version d’origine du produit : Visual Basic .NET
Numéro de la base de connaissances d’origine : 313154

Résumé

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

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

Remarque

Pour obtenir une version Microsoft Visual C# .NET de cet article, consultez 326339.

Configuration requise

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

  • Microsoft Windows
  • Microsoft .NET Framework
  • Microsoft Visual Studio .NET
  • Microsoft Internet Information Services (IIS)
  • Microsoft 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 sServer 7.0 et versions ultérieures.

Créer un projet .NET Visual Basic et ajouter dataGrid

Dans cette section, vous créez un projet .NET Visual Basic, sélectionnez un format pour DataGrid, puis définissez 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’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 Basic sous Types de projets, puis cliquez 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 suivant (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 le contrôle DataGrid, puis cliquez sur Format automatique. Cliquez sur Couleur 1, puis sur OK.

  8. Cliquez avec le bouton droit sur le contrôle 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 Sales Totals by Amount qui se trouve dans la base de données Northwind pour calculer le résumé du champ SaleAmount. L’affichage Ventes totales par montant inclut les champs Commandes, CompanyName et SaleAmount.

  1. Dans l’IDE, 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 :

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

    Private myTotal As System.Double 'This variable tracks the running total.
    
  4. Remplacez le code dans l’événement Page_Load par le code suivant :

    Private Sub Page_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        'Connect to the database, retrieve data, and then fill the data in the DataSet.
        Dim myConnection As New SqlConnection("server=(local)\netsdk;"Integrated Security=SSPI" & _
        pwd=;database=northwind")
        Dim myDataAdapter As New SqlDataAdapter("SELECT top 15 [OrderID], [CompanyName], " & _
        "[SaleAmount] FROM [Northwind].[dbo].[Sales Totals by Amount]", myConnection)
        Dim myDataSet As New DataSet()
        myDataAdapter.Fill(myDataSet)
        'Set the DataSource for the DataGrid, and then bind the data.
        DataGrid1.DataSource = myDataSet
        DataGrid1.DataBind()
    End Sub
    
  5. Modifiez le chaîne de connexion en fonction de votre environnement.

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 valeur SaleAmount. 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 données SaleAmount.

Ajoutez le code suivant après l’événement Page_Load :

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
    Select Case e.Item.ItemType
    Case ListItemType.AlternatingItem, ListItemType.Item
    'Calculate total for the field of each row and alternating row.
    myTotal += CDbl(e.Item.Cells(2).Text)
    'Format the data, and then align the text of each cell to the right.
    e.Item.Cells(2).Text = Format(CDbl(e.Item.Cells(2).Text), "##,##0.00")
    e.Item.Cells(2).Attributes.Add("align", "right")
    Case 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")
    End Select
End Sub

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