Cree una fila de resumen para un control DataGrid mediante Visual C# en ASP.NET

En este artículo se describe cómo crear una fila de resumen para un control DataGrid mediante Visual C# en ASP.NET.

Versión original del producto: Visual C#
Número de KB original: 326339

Resumen

En este artículo, creará un proyecto .NET de Visual C#, agregará código para acceder a la vista Totales de ventas por cantidad desde la base de datos Northwind y, a continuación, enlazará la vista Totales de ventas por importe a DataGrid. En este ejemplo se usa el ItemDataBound evento de DataGrid para total el SaleAmount campo al enlazar los datos a DataGrid. En este ejemplo también se usa el pie de página de DataGrid para mostrar el resumen o los totales.

Para obtener una versión de .NET de Microsoft Visual Basic de este artículo, vea How to create a summary row for a DataGrid in ASP.NET by using Visual Basic .NET (Cómo crear una fila de resumen para una instancia de DataGrid en ASP.NET mediante Visual Basic .NET).

En este artículo se hace referencia al siguiente espacio de nombres System.Data.SqlClientde biblioteca de clases de .NET Framework .

Requisitos

En la lista siguiente se describen el hardware, el software, la infraestructura de red y los Service Pack recomendados que son necesarios:

  • Windows
  • .NET Framework
  • Visual Studio .NET
  • Internet Information Services (IIS)
  • SQL Server 7.0 o posterior y la base de datos Northwind

Nota:

La base de datos Northwind se incluye con SQL Server 7.0 y versiones posteriores.

Crear un proyecto .NET de Visual C# y agregar el control DataGrid

En esta sección, creará un proyecto .NET de Visual C#, seleccionará un formato para DataGrid y, a continuación, establecerá DataGrid para mostrar el pie de página. Dado que usa el pie de página para mostrar el resumen, es importante que muestre el pie de página.

Nota:

De forma predeterminada, la propiedad ShowFooter está desactivada.

  1. Inicie Visual Studio .NET. Aparece el entorno de desarrollo integrado (IDE) de Visual Studio .NET.

  2. En el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto.

  3. En el cuadro de diálogo Nuevo proyecto , haga clic en Proyectos de Visual C# en Tipos de proyectoy, a continuación, haga clic en ASP.NET aplicación web en Plantillas.

  4. En el cuadro de diálogo Nuevo proyecto , observe que el cuadro Nombre no está disponible (aparece atenuado). El cuadro Ubicación contiene el texto (o similar). http://localhost/WebApplication1

    Cambie la ubicación a y, a http://localhost/SummaryRowcontinuación, haga clic en Aceptar. Se crea un nuevo proyecto, que incluye un formulario web denominado WebForm1.aspx.

  5. En Explorador de soluciones, haga doble clic en WebForm1.aspx.

  6. Arrastre un control DataGrid desde el cuadro de herramientas al formulario.

  7. Haga clic con el botón derecho en DataGridy, a continuación, haga clic en Formato automático. Haga clic en Colorido 1 y, a continuación, haga clic en Aceptar.

  8. Haga clic con el botón derecho en DataGridy, a continuación, haga clic en Propiedades. En el cuadro de diálogo Propiedades , cambie el valor de la propiedad ShowFooter a True.

Escritura de código para acceder a la base de datos

En esta sección, usará la vista Totales de ventas por importe que se encuentra en la base de datos Northwind para calcular el resumen del SaleAmount campo. La vista Totales de ventas por importe incluye los Orderscampos , CompanyNamey SaleAmount .

  1. En el IDE de .NET de Visual Studio, haga clic con el botón derecho en el formulario web y, a continuación, haga clic en Ver código.

  2. En la ventana de código subyacente, agregue el código siguiente a la parte superior de la página:

    using System.Data.SqlClient;
    
  3. Agregue el código siguiente en la sección de declaración de clase:

    private double myTotal; //This variable tracks the running total.
    
  4. Reemplace el código del Page_Load evento por el código siguiente:

    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. Modifique el cadena de conexión según corresponda para su entorno.

  6. Expanda el formulario web Designer región de código generada y agregue la siguiente instrucción en la InitializeComponent función :

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

Uso del evento ItemDataBound

El ItemDataBound evento se genera después de que un elemento esté enlazado a datos al control DataGrid. Este evento le ofrece la última oportunidad de acceder al elemento de datos antes de que aparezca en el cliente. Una vez generado este evento, el elemento de datos es null y ya no está disponible.

Para cada elemento enlazado a datos, debe comprobar la ItemType propiedad . Si ItemType es de tipo Item o AlternatingItem, recibirá el valor de la última celda del elemento, que contiene el SaleAmount valor. En este ejemplo, agregará este valor a la variable de resumen en ejecución. ItemType Cuando es Footer, recibe el total de todas las filas. Por lo tanto, asigne el valor de la variable de resumen al valor de texto de la última celda.

Nota:

Este código usa expresiones de formato para proporcionar una apariencia uniforme de los SaleAmount datos.

Agregue el código siguiente después del Page_Load evento:

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

Compilación del proyecto y prueba del código

  1. En el menú Archivo, haga clic en Guardar todo.
  2. On the Build menu, click Build Solution.
  3. En Explorador de soluciones, haga clic con el botón derecho en la página .aspx y, a continuación, haga clic en Ver en el explorador. La página .aspx aparece en el explorador y DataGrid muestra las columnas OrderID, CompanyName y SaleAmount . Observe que el pie de página muestra el total de la columna SaleAmount .

Referencias