none
subtrair colunas gridview RRS feed

  • Pergunta

  • Bom Dia a todos...

    estou precisando subtrair duas colunas no gridview e mostrar o resultado da subtração de cada linha em uma nova coluna... vou utilizar o rowdatabound, mas estou com duvida de como gerar essa nova coluna e como subtrair uma da outra... se alguém tiver alguma ideia pra ajudar... eu sei realizar a operação na clausula select, mas ainda nao ta vindo o resultado do jeitinho que eu queria...

    Abraçoss

    sexta-feira, 9 de março de 2012 11:01

Respostas

  • Uma forma de fazer:

    ASPX

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridviewSoma.aspx.cs" Inherits="JQTest.GridviewSoma" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" 
                onrowdatabound="GridView1_RowDataBound">
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>
    

    CS

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    
    namespace JQTest
    {
        public partial class GridviewSoma : System.Web.UI.Page
        {
            DataTable mDataTable;
    
            protected void Page_Load(object sender, EventArgs e)
            {
                CriarTabela();
    
                GridView1.DataSource = mDataTable;
                GridView1.DataBind();
            }
    
            private void CriarTabela()
            {
                mDataTable = new DataTable();
    
                #region Colunas
                DataColumn mDataColumn;
    
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.String");
                mDataColumn.ColumnName = "idProduto";
                mDataTable.Columns.Add(mDataColumn);
    
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.String");
                mDataColumn.ColumnName = "valor1";
                mDataTable.Columns.Add(mDataColumn);
    
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.String");
                mDataColumn.ColumnName = "valor2";
                mDataTable.Columns.Add(mDataColumn);
    
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.String");
                mDataColumn.ColumnName = "subtracao";
                mDataTable.Columns.Add(mDataColumn);
                #endregion
    
                //==================================
    
                DataRow linha;
                linha = mDataTable.NewRow();
    
                linha["idProduto"] = "4564";
                linha["valor1"] = 34;
                linha["valor2"] = 11;
                mDataTable.Rows.Add(linha);
    
                linha = mDataTable.NewRow();
                linha["idProduto"] = "5675";
                linha["valor1"] = 34;
                linha["valor2"] = 8;
                mDataTable.Rows.Add(linha);
    
            }
    
            protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Cells[3].Text = (Convert.ToInt32(e.Row.Cells[1].Text) - Convert.ToInt32(e.Row.Cells[2].Text)).ToString();
                }
            }
        }
    }


    Rodrigo Reis Ferreira
    Microsoft Certified

    • Marcado como Resposta Marcos Paulo P.M quinta-feira, 1 de novembro de 2012 12:31
    segunda-feira, 12 de março de 2012 12:46

Todas as Respostas

  • Amigo, é bem simples. vou te mostrar um exemplo:

    digamos que temos a classe:

        public class Valor
        {
            public int x { get; set; }
            public int y { get; set; }
        }

    que gera a lista:

    Random myRandom = new Random();
    
                List<Valor> Valores = new List<Valor>();
                
                Valor v = null;
                for (int i = 0; i < 20; i++)
                {
                    v = new Valor();
                    v.x = myRandom.Next(100);
                    v.y = myRandom.Next(100);
                    Valores.Add(v);
                }
                GridView1.DataSource = Valores;
                GridView1.DataBind();

    O html do meu gridview está setando as colunas desta maneira:

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns= "false" 
                        onrowdatabound="GridView1_RowDataBound">
                        <Columns>
                            <asp:BoundField HeaderText = "Valor1" DataField = "x" />
                            <asp:BoundField HeaderText = "Valor2" DataField = "y" />
                            <asp:BoundField HeaderText = "Resultado" />
                        </Columns>
                    </asp:GridView>

    e o meu RowDataBound está fazendo a operação de soma assim:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    int x = int.Parse(e.Row.Cells[0].Text);
                    int y = int.Parse(e.Row.Cells[1].Text);
                    e.Row.Cells[2].Text = (x + y).ToString();
                }
            }


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Se for útil marque como resposta e faça um Developer feliz :)

    segunda-feira, 12 de março de 2012 12:06
    Moderador
  • Uma forma de fazer:

    ASPX

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridviewSoma.aspx.cs" Inherits="JQTest.GridviewSoma" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" 
                onrowdatabound="GridView1_RowDataBound">
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>
    

    CS

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    
    namespace JQTest
    {
        public partial class GridviewSoma : System.Web.UI.Page
        {
            DataTable mDataTable;
    
            protected void Page_Load(object sender, EventArgs e)
            {
                CriarTabela();
    
                GridView1.DataSource = mDataTable;
                GridView1.DataBind();
            }
    
            private void CriarTabela()
            {
                mDataTable = new DataTable();
    
                #region Colunas
                DataColumn mDataColumn;
    
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.String");
                mDataColumn.ColumnName = "idProduto";
                mDataTable.Columns.Add(mDataColumn);
    
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.String");
                mDataColumn.ColumnName = "valor1";
                mDataTable.Columns.Add(mDataColumn);
    
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.String");
                mDataColumn.ColumnName = "valor2";
                mDataTable.Columns.Add(mDataColumn);
    
                mDataColumn = new DataColumn();
                mDataColumn.DataType = Type.GetType("System.String");
                mDataColumn.ColumnName = "subtracao";
                mDataTable.Columns.Add(mDataColumn);
                #endregion
    
                //==================================
    
                DataRow linha;
                linha = mDataTable.NewRow();
    
                linha["idProduto"] = "4564";
                linha["valor1"] = 34;
                linha["valor2"] = 11;
                mDataTable.Rows.Add(linha);
    
                linha = mDataTable.NewRow();
                linha["idProduto"] = "5675";
                linha["valor1"] = 34;
                linha["valor2"] = 8;
                mDataTable.Rows.Add(linha);
    
            }
    
            protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Cells[3].Text = (Convert.ToInt32(e.Row.Cells[1].Text) - Convert.ToInt32(e.Row.Cells[2].Text)).ToString();
                }
            }
        }
    }


    Rodrigo Reis Ferreira
    Microsoft Certified

    • Marcado como Resposta Marcos Paulo P.M quinta-feira, 1 de novembro de 2012 12:31
    segunda-feira, 12 de março de 2012 12:46