Creación de una fila de resumen para dataGrid en ASP.NET mediante Visual Basic .NET

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

Versión original del producto: Visual Basic .NET
Número de KB original: 313154

Resumen

En este artículo, creará un proyecto de .NET de Visual Basic, agregará código para acceder a la vista denominada Totales de ventas por importe 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 totalar el campo SaleAmount cuando se enlazan 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.

En este artículo se hace referencia al espacio de nombres System.Data.SqlClientbiblioteca de clases de Microsoft .NET Framework .

Nota:

Para obtener una versión de Microsoft Visual C# .NET de este artículo, consulte 326339.

Requisitos

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

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

Nota:

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

Creación de un proyecto de .NET de Visual Basic y adición de DataGrid

En esta sección, creará un proyecto de .NET de Visual Basic, 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 IDE de .NET de Visual Studio.

  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 Basic 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 siguiente (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 el control DataGrid y, 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 el control DataGrid y, 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 campo SaleAmount. La vista Totales de ventas por importe incluye los campos Orders, CompanyName y SaleAmount.

  1. En el IDE, 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:

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

    Private myTotal As System.Double 'This variable tracks the running total.
    
  4. Reemplace el código del Page_Load evento por el código siguiente:

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

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 valor SaleAmount. 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 datos SaleAmount.

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

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

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