none
contar lineas de un gridview asp.net c# RRS feed

  • Pregunta

  • Saludos

    amigos quiero preguntarle algo es posible sumar lineas en un gridview.

    ejemplo

    tengo una columna llamada cantidad que es numérica y otra que es alfanumérica llamada transacciones y esta solo pone si es compra o venta.

    podria sumar las que digan compra y sumar aparte la que dicen venta.

    es eso posible o no

    martes, 13 de febrero de 2018 11:26

Respuestas

  • Buenos días.

    Si es posible realizar el conteo lo que puedes realizar seria crear 2 variables que servirán como contador y recorrer mediante un foreach la grilla y allí comparas los campos que son compras y vas sumando el contador, lo mismo con ventas.

    Espero te sirva de ayuda.

    Saludos.

    • Propuesto como respuesta Pablo RubioModerator martes, 13 de febrero de 2018 15:25
    • Marcado como respuesta agustin173 miércoles, 14 de febrero de 2018 20:32
    martes, 13 de febrero de 2018 12:21
  • Prueba el siguiente código ya  que estas usando RowDataBound.

      protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType != DataControlRowType.DataRow) return;
                if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "transaccion")) == "Compra")
                    acumcompra += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "cantidad"));
                else if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "transaccion")) == "Venta")
                    acumVenta += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "cantidad"));
    
                TextBox1.Text = "Compra:" + acumcompra + " Venta:" + acumVenta;
    
            }



    • Editado osrol miércoles, 14 de febrero de 2018 14:48
    • Propuesto como respuesta Pablo RubioModerator miércoles, 14 de febrero de 2018 17:47
    • Marcado como respuesta agustin173 miércoles, 14 de febrero de 2018 20:32
    miércoles, 14 de febrero de 2018 14:45

Todas las respuestas

  • Buenos días.

    Si es posible realizar el conteo lo que puedes realizar seria crear 2 variables que servirán como contador y recorrer mediante un foreach la grilla y allí comparas los campos que son compras y vas sumando el contador, lo mismo con ventas.

    Espero te sirva de ayuda.

    Saludos.

    • Propuesto como respuesta Pablo RubioModerator martes, 13 de febrero de 2018 15:25
    • Marcado como respuesta agustin173 miércoles, 14 de febrero de 2018 20:32
    martes, 13 de febrero de 2018 12:21
  • podrias darme un ejemplo si lo tienes

    por favor

    martes, 13 de febrero de 2018 20:05
  • podrias darme un ejemplo si lo tienes

    por favor


    Mejor seria que primero lo intentaras, subas el avance que tienes y las dudas al respecto.

    Saludos.


    miércoles, 14 de febrero de 2018 12:41
  • ok lo que he podido realizar es esto

                                                                                                           

    private decimal _Total = 0;
            decimal acumVenta = 0;
            decimal acumcompra = 0;




            protected void GvwCompraVenta_RowDataBound(object sender, GridViewRowEventArgs e)
          {

              try
              {
                  if (e.Row.RowType == DataControlRowType.DataRow)
                  {
                      _Total += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "SubTotal"));
                  }
                  else if (e.Row.RowType == DataControlRowType.Footer)
                  {

                     TxtMontoTotal.Text = _Total.ToString("N2");

                  }
              }
              catch (Exception err)
              {
                  string error = err.Message.ToString() + " - " + err.Source.ToString();
              }


     Partir de aquí comienza mi problema   



                decimal ConVen;
                ConVen = decimal.Parse(TxtControlVenta.Text);

                if (CbxVenta.Checked == true)
                {


                    try
                    {
                        if (e.Row.RowType == DataControlRowType.DataRow)
                        {
                            acumVenta += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Cantidad"));

                        }
                        else if (e.Row.RowType == DataControlRowType.Footer)
                        {

                            TxtSumarVenta.Text = acumVenta.ToString();

                        }
                    }
                    catch (Exception err)
                    {
                        string error = err.Message.ToString() + " - " + err.Source.ToString();
                    }

                    if (ConVen < acumVenta)
                    {

                        ImgBarras.ImageUrl = "~/Imagenes/BarraMarron.png";
                        LblMensajes.Text = "Digito mas del limite permitido en la venta";
                        TmrOcultarMensaje.Enabled = true;

                    }

                }
                else
                {

                    decimal ConCom;
                    ConCom = decimal.Parse(TxtControlCompra.Text);

                    if (CbxCompra.Checked == true)
                    {

                        try
                        {
                            if (e.Row.RowType == DataControlRowType.DataRow)
                            {
                                acumcompra += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Cantidad"));


                            }
                            else if (e.Row.RowType == DataControlRowType.Footer)
                            {

                                TxtSumarCompra.Text = acumcompra.ToString();

                            }
                        }
                        catch (Exception err)
                        {
                            string error = err.Message.ToString() + " - " + err.Source.ToString();
                        }

                        if (ConCom < acumcompra)
                        {

                            ImgBarras.ImageUrl = "~/Imagenes/BarraMarron.png";
                            LblMensajes.Text = "Digito mas del limite permitido en la compra";
                            TmrOcultarMensaje.Enabled = true;

                        }

                    }

                }

                }

    son dos columnas una llamada cantidad que es numerica y otra llamada transaccion alfanumerica que solo pone si es una compra o venta

    ejemplo:

    cantidad         transaccion

    1                    compra

    2                    compra

    4                    venta

    5                    venta

    debe acumularlos en dos variables una llamada acumcompra y otra acumventa

    acumcompra debe decir 3

    acumventa debe decir 9

    no se como hacer para recorrer la grilla y me separe estos valores

    miércoles, 14 de febrero de 2018 13:48
  • Prueba el siguiente código ya  que estas usando RowDataBound.

      protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType != DataControlRowType.DataRow) return;
                if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "transaccion")) == "Compra")
                    acumcompra += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "cantidad"));
                else if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "transaccion")) == "Venta")
                    acumVenta += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "cantidad"));
    
                TextBox1.Text = "Compra:" + acumcompra + " Venta:" + acumVenta;
    
            }



    • Editado osrol miércoles, 14 de febrero de 2018 14:48
    • Propuesto como respuesta Pablo RubioModerator miércoles, 14 de febrero de 2018 17:47
    • Marcado como respuesta agustin173 miércoles, 14 de febrero de 2018 20:32
    miércoles, 14 de febrero de 2018 14:45
  • Voy a probar luego te cuento
    miércoles, 14 de febrero de 2018 15:56
  • Todavia estoy probando y hasta ahora va bien

    pero eso es para tomar una desicion cuando este listo publico como quedo, te doy las gracias y cierro la seccion con este tena

    pero va muy bien

    miércoles, 14 de febrero de 2018 20:34
  • osrol muchas gracias hermano por tus respuestas cada una una muy acertadas 

    te estoy muy agradecido.

    gracias

    dejare el código aquí por si alguien algún día tiene el mismo problema.

    private decimal _Total = 0;
            decimal acumVenta = 0;
            decimal acumcompra = 0;
     
            protected void GvwCompraVenta_RowDataBound(object sender, GridViewRowEventArgs e)
          {

              try
              {
                  if (e.Row.RowType == DataControlRowType.DataRow)
                  {
                      _Total += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "SubTotal"));
                  }
                  else if (e.Row.RowType == DataControlRowType.Footer)
                  {

                     TxtMontoTotal.Text = _Total.ToString("N2");

                  }
              }
              catch (Exception err)
              {
                  string error = err.Message.ToString() + " - " + err.Source.ToString();
              }


                if (e.Row.RowType != DataControlRowType.DataRow) return;
                if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "transaccion")) == "Compra")
                    acumcompra += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "cantidad"));
                else if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "transaccion")) == "Venta")
                    acumVenta += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "cantidad"));

              //  TxtAcumulador.Text = "Compra:" + acumcompra + " Venta:" + acumVenta;

                decimal ConVen;
                ConVen = decimal.Parse(TxtControlVenta.Text);

                if (CbxVenta.Checked == true)
                {
                    
                    if (ConVen < acumVenta)
                    {

                        ImgBarras.ImageUrl = "~/Imagenes/BarraMarron.png";
                        LblMensajes.Text = "Digito mas del limite permitido en la venta";
                        TmrOcultarMensaje.Enabled = true;

                    }

                }
                else
                {
                    
                    decimal ConCom;
                    ConCom = decimal.Parse(TxtControlCompra.Text);
       
                    if (CbxCompra.Checked == true)
                    {
                        
                        if (ConCom < acumcompra)
                        {

                            ImgBarras.ImageUrl = "~/Imagenes/BarraMarron.png";
                            LblMensajes.Text = "Digito mas del limite permitido en la compra";
                            TmrOcultarMensaje.Enabled = true;

                        }

                    }
     
                }

                }

    jueves, 15 de febrero de 2018 10:33