Criar uma linha de resumo para um controle DataGrid usando o Visual C# no ASP.NET

Este artigo descreve como criar uma linha de resumo para um controle DataGrid usando o Visual C# em ASP.NET.

Versão original do produto: Visual C#
Número de KB original: 326339

Resumo

Neste artigo, você cria um projeto .NET do Visual C#, adiciona código para acessar a exibição Total de Vendas por Quantidade do banco de dados Northwind e associa os Totais de Vendas por Valor ao DataGrid. Este exemplo usa o ItemDataBound evento do DataGrid para totalizar o SaleAmount campo quando você associa os dados ao DataGrid. Este exemplo também usa o rodapé do DataGrid para exibir o resumo ou os totais.

Para obter uma versão do .NET do Microsoft Visual Basic deste artigo, consulte Como criar uma linha de resumo para um DataGrid no ASP.NET usando o Visual Basic .NET.

Este artigo refere-se ao namespace System.Data.SqlClientda Biblioteca de Classes .NET Framework a seguir .

Requisitos

A lista a seguir descreve o hardware, software, infraestrutura de rede e service packs recomendados que são necessários:

  • Windows
  • .NET Framework
  • Visual Studio .NET
  • IIS (Serviços de Informações da Internet)
  • SQL Server 7.0 ou posterior e o banco de dados Northwind

Observação

O banco de dados Northwind é incluído com SQL Server 7.0 e posterior.

Criar um projeto .NET do Visual C# e adicionar o controle DataGrid

Nesta seção, você cria um projeto .NET do Visual C#, seleciona um formato para o DataGrid e define o DataGrid para exibir o rodapé. Como você usa o rodapé para exibir o resumo, é importante exibir o rodapé.

Observação

Por padrão, a propriedade ShowFooter está desativada.

  1. Inicie o Visual Studio .NET. O IDE (ambiente de desenvolvimento integrado) do Visual Studio .NET é exibido.

  2. No menu arquivo, aponte para novo e, em seguida, clique em Project.

  3. Na caixa de diálogo Novo Projeto , clique em Projetos do Visual C# em Tipos de Projeto e clique em ASP.NET Aplicativo Web em Modelos.

  4. Na caixa de diálogo Novo Projeto , observe que a caixa Nome não está disponível (ela aparece esmaecida). A caixa Localização contém o texto (ou semelhante) http://localhost/WebApplication1.

    Altere o local para http://localhost/SummaryRowe clique em OK. Um novo projeto é criado, que inclui um Formulário Web chamado WebForm1.aspx.

  5. Em Gerenciador de Soluções, clique duas vezes em WebForm1.aspx.

  6. Arraste um controle DataGrid da caixa de ferramentas para o formulário.

  7. Clique com o botão direito do mouse em DataGrid e clique em Formato Automático. Clique em Colorido 1 e clique em OK.

  8. Clique com o botão direito do mouse em DataGrid e clique em Propriedades. Na caixa de diálogo Propriedades , altere o valor da propriedade ShowFooter para True.

Gravar código para acessar o banco de dados

Nesta seção, você usa a exibição Total de Vendas por Valor localizada no banco de dados Northwind para calcular o resumo do SaleAmount campo. A exibição Totais de Vendas por Valor inclui os Orderscampos , o CompanyNamee o SaleAmount .

  1. No IDE do .NET do Visual Studio, clique com o botão direito do mouse no Formulário Web e clique em Exibir Código.

  2. Na janela code-behind, adicione o seguinte código à parte superior da página:

    using System.Data.SqlClient;
    
  3. Adicione o seguinte código na seção declaração de classe:

    private double myTotal; //This variable tracks the running total.
    
  4. Substitua o código no Page_Load evento pelo seguinte código:

    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 o cadeia de conexão conforme apropriado para seu ambiente.

  6. Expanda o Formulário Web Designer região de código gerada e adicione a seguinte instrução na InitializeComponent função:

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

Usar o evento ItemDataBound

O ItemDataBound evento é gerado depois que um item é associado aos dados vinculados ao controle DataGrid. Esse evento oferece a última oportunidade de acessar o item de dados antes de aparecer no cliente. Depois que esse evento é gerado, o item de dados é nulo e não está mais disponível.

Para cada item vinculado a dados, você deve marcar a ItemType propriedade. Se ItemType for do tipo Item ou AlternatingItem, você receberá o valor da última célula do item, que contém o SaleAmount valor. Neste exemplo, você adiciona esse valor à variável de resumo em execução. Quando o ItemType é Footer, você recebe o total de todas as linhas. Portanto, você atribui o valor da variável de resumo ao valor de texto da última célula.

Observação

Esse código usa expressões de formatação para fornecer uma aparência uniforme para os SaleAmount dados.

Adicione o seguinte código após o 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;
    }
}

Criar o projeto e testar o código

  1. No menu Arquivo , clique em Salvar Tudo.
  2. On the Build menu, click Build Solution.
  3. Em Gerenciador de Soluções, clique com o botão direito do mouse na página .aspx e clique em Exibir no Navegador. A página .aspx é exibida no navegador e o DataGrid exibe as colunas OrderID, CompanyName e SaleAmount . Observe que o rodapé exibe o total da coluna SaleAmount .

Referências