Come creare una riga di riepilogo per un oggetto DataGrid in ASP.NET tramite Visual Basic .NET

Questo articolo dettagliato descrive come creare una riga di riepilogo per un controllo DataGrid in ASP.NET usando Visual Basic .NET.

Versione originale del prodotto: Visual Basic .NET
Numero KB originale: 313154

Riassunto

In questo articolo si crea un progetto .NET di Visual Basic, si aggiunge codice per accedere alla vista denominata Sales Totals by Amount dal database Northwind e quindi si associa la visualizzazione Sales Totals by Amount alla vista DataGrid. Questo esempio usa l'evento ItemDataBound di DataGrid per totalare il campo SaleAmount quando si associano i dati a DataGrid. Questo esempio usa anche il piè di pagina di DataGrid per visualizzare il riepilogo o i totali.

Questo articolo fa riferimento allo spazio dei nomi System.Data.SqlClientdella libreria di classi di Microsoft .NET Framework.

Annotazioni

Per una versione .NET di Microsoft Visual C# di questo articolo, vedere 326339.

Requisiti

Nell'elenco seguente sono elencati l'hardware, il software, l'infrastruttura di rete e i service pack consigliati:

  • Microsoft Windows
  • Microsoft .NET Framework
  • Microsoft Visual Studio .NET
  • Microsoft Internet Information Services (IIS)
  • Microsoft SQL Server 7.0 o versione successiva e il database Northwind

Annotazioni

Il database Northwind è incluso in SQL sServer 7.0 e versioni successive.

Creare un progetto .NET di Visual Basic e aggiungere DataGrid

In questa sezione si crea un progetto .NET di Visual Basic, si seleziona un formato per DataGrid e quindi si imposta DataGrid per visualizzare il piè di pagina. Poiché si usa il piè di pagina per visualizzare il riepilogo, è importante visualizzare il piè di pagina.

Annotazioni

Per impostazione predefinita, la proprietà ShowFooter è disattivata.

  1. Avviare Visual Studio .NET. Viene visualizzato l'IDE .NET di Visual Studio.

  2. Scegliere Nuovo dal menu Filee quindi fare clic su Progetto.

  3. Nella finestra di dialogo Nuovo progetto fare clic su Progetti Visual Basic in Tipi di progetto e quindi su ASP.NET'applicazione Web in Modelli.

  4. Nella finestra di dialogo Nuovo progetto si noti che la casella Nome non è disponibile (viene visualizzata in grigio). La casella Percorso contiene il testo seguente (o simile):
    http://localhost/WebApplication1

    Modificare il percorso in http://localhost/SummaryRowe quindi fare clic su OK. Viene creato un nuovo progetto, che include un Web Form denominato WebForm1.aspx.

  5. In Esplora soluzioni fare doppio clic su WebForm1.aspx.

  6. Trascinare un controllo DataGrid dalla casella degli strumenti al form.

  7. Fare clic con il pulsante destro del mouse sul controllo DataGrid e quindi scegliere Formato automatico. Fare clic su Colorato 1, quindi fare clic su OK.

  8. Fare clic con il pulsante destro del mouse sul controllo DataGrid e quindi scegliere Proprietà. Nella finestra di dialogo Proprietà modificare il valore della proprietà ShowFooter su True.

Scrivere codice per accedere al database

In questa sezione si usa la visualizzazione Sales Totals by Amount che si trova nel database Northwind per calcolare il riepilogo per il campo SaleAmount. La visualizzazione Sales Totals by Amount include i campi Orders, CompanyName e SaleAmount.

  1. Nell'IDE fare clic con il pulsante destro del mouse sul Web Form e quindi scegliere Visualizza codice.

  2. Nella finestra code-behind aggiungere il codice seguente nella parte superiore della pagina:

    Imports System.Data
    Imports System.Data.SqlClient
    
  3. Aggiungere il codice seguente nella sezione relativa alla dichiarazione di classe:

    Private myTotal As System.Double 'This variable tracks the running total.
    
  4. Sostituire il codice nell'evento Page_Load con il codice seguente:

    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. Modificare il stringa di connessione in base alle esigenze dell'ambiente.

Usare l'evento ItemDataBound

L'evento ItemDataBound viene generato dopo che un elemento è associato al controllo DataGrid. Questo evento offre l'ultima opportunità di accedere all'elemento di dati prima che venga visualizzato nel client. Dopo aver generato questo evento, l'elemento di dati è Null e non è più disponibile.

Per ogni elemento associato a dati, è necessario controllare la ItemType proprietà . Se ItemType è di tipo Item o AlternatingItem, si riceve il valore dall'ultima cella dell'elemento, che contiene il valore SaleAmount. In questo esempio questo valore viene aggiunto alla variabile di riepilogo in esecuzione. ItemType Quando è Footer, si riceve il totale da tutte le righe. Pertanto, si assegna il valore della variabile di riepilogo al valore di testo dell'ultima cella.

Annotazioni

Questo codice usa espressioni di formattazione per fornire un aspetto uniforme per i dati SaleAmount.

Aggiungere il codice seguente dopo l'evento 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

Compilare il progetto e testare il codice

  1. Scegliere Save All (Salva tutti) dal menu File.
  2. Nel menu Compila scegliere Compila soluzione.
  3. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla pagina .aspx e quindi scegliere Visualizza nel browser. La pagina .aspx viene visualizzata nel browser e DataGrid visualizza le colonne OrderID, CompanyName e SaleAmount. Si noti che il piè di pagina visualizza il totale della colonna SaleAmount.

Riferimenti