Creare una riga di riepilogo per un controllo DataGrid usando Visual C# in ASP.NET

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

Versione originale del prodotto: Oggetto visivo C#
Numero KB originale: 326339

Riepilogo

In questo articolo si crea un progetto Visual C# .NET, si aggiunge il codice per accedere alla visualizzazione Totale vendite per importo dal database Northwind e quindi si associa la visualizzazione Totale vendite per importo a DataGrid. Questo esempio usa l'evento ItemDataBound di DataGrid per totalizzare il SaleAmount campo quando si associano i dati a DataGrid. Questo esempio usa anche il piè di pagina di DataGrid per visualizzare il riepilogo o i totali.

Per una versione di Microsoft Visual Basic .NET di questo articolo, vedere Come creare una riga di riepilogo per un controllo DataGrid in ASP.NET usando Visual Basic .NET.

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

Requisiti

L'elenco seguente descrive l'hardware, il software, l'infrastruttura di rete e i Service Pack consigliati necessari:

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

Nota

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

Creare un progetto .NET di Visual C# e aggiungere il controllo DataGrid

In questa sezione si crea un progetto Visual C# .NET, 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.

Nota

Per impostazione predefinita, la proprietà ShowFooter è disattivata.

  1. Avviare Visual Studio .NET. Viene visualizzato l'ambiente di sviluppo integrato (IDE) di Visual Studio .NET.

  2. Scegliere Nuovo dal menu File, quindi fare clic su Progetto.

  3. Nella finestra di dialogo Nuovo progetto fare clic su Progetti Visual C# in Tipi di progetto e quindi fare clic 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 (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 su DataGrid e quindi scegliere Formato automatico. Fare clic su Colorato 1 e quindi su OK.

  8. Fare clic con il pulsante destro del mouse su 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 viene utilizzata la visualizzazione Totale vendite per importo che si trova nel database Northwind per calcolare il riepilogo per il SaleAmount campo. La visualizzazione Totali vendite per importo include i Orderscampi , CompanyNamee SaleAmount .

  1. Nell'IDE di Visual Studio .NET 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 all'inizio della pagina:

    using System.Data.SqlClient;
    
  3. Aggiungere il codice seguente nella sezione della dichiarazione di classe:

    private double myTotal; //This variable tracks the running total.
    
  4. Sostituire il codice nell'evento Page_Load con il codice seguente:

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

  6. Espandere il Web Form Designer'area di codice generata e quindi aggiungere l'istruzione seguente nella InitializeComponent funzione :

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

Usare l'evento ItemDataBound

L'evento ItemDataBound viene generato dopo che un elemento è associato ai dati al controllo DataGrid. Questo evento offre l'ultima opportunità di accedere all'elemento dati prima che venga visualizzato nel client. Dopo la generazione di questo evento, l'elemento 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 SaleAmount valore . In questo esempio si aggiunge questo valore alla variabile di riepilogo in esecuzione. ItemType Quando è Footer, si riceve il totale da tutte le righe. Di conseguenza, si assegna il valore della variabile di riepilogo al valore di testo dell'ultima cella.

Nota

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

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

Compilare il progetto e testare il codice

  1. Scegliere Salva tutto dal menu File.
  2. Nel menu Compila fare clic su 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