none
Ir sumando registros que se van seleccionando de un gridview con C# ASP.NET solo si los elementos seleccionados son del mismo nombre, RRS feed

  • Pregunta

  • Estoy haciendo practicas y aqui en almacen digamos que entra diferentes productos y se van agregando a una bitacora por ejemplo

    mysql

    id          producto        cantidad             peso(total)     estatus 

    1           Harina               2                     1000 grs         sin revisar                   (primera entrada)

    2            Harina             1                         500 grs      sin revisar                        (segunda entrada mismo dia)

    3             huevo              2                          100 grs        sin revisar                    (mismo dia)

    4             huevo               1                              50 grs     sin revisar     

    GRIDVIEW despues de filtrar, muestra solo la harina

    id          producto        cantidad             peso(total)     estatus 

    1           Harina               2                     1000 grs          (ira un checkbox)                  

    2            Harina             1                         500 grs        (ira un checbox)

    la idea es si yo selecciono cada checbox en un se ira sumando digamos si selecciono ambos registros se supone que hay una suma de 1500 gramos, debe de mostrar la cantidad en unos textbox, al igual lo mismo al ir filtrando cada uno por ejmplo lo mismo con el huevo, es urgente!!!!!!!!!!!!!!!!!!!!! :(

    no se si este bien pero me sale error en el where el error presenta (REPRESENTS TEXT AS SEQUENCE UTF-16 CODE UNITS. TO BROWSER THE .NET FRMWORK SOURCE CODE FOR THIS THY, SEE THE REFERENCE SOURCE.   ARGUMENT1: CNNOT CONVERT FROM  STRING TO INT.)

       protected void seleccionar(object sender, EventArgs e)
                    {
                      int suma = GridView1.Rows.Cast<GridViewRow>()
                      .Where(x => Convert.ToBoolean(((CheckBox)x.FindControl("chbItem")).Checked) )
                     .Sum(x => Convert.ToInt32(x.Cells[2].Text));
                        int suma2 = GridView1.Rows.Cast<GridViewRow>()
                        .Where(y => Convert.ToBoolean(((CheckBox)y.FindControl("chbItem")).Checked))
                      .Sum(y => Convert.ToInt32(y.Cells[3].Text));

                PesoTotal.Text = suma.ToString();
                         cantidadTotal.Text = suma2.ToString();
                    } 

    me falta que tome el nombre del producto una sola vez solo si son el mismo,  no se si hay una forma o que le falte mi codigo, en este momento solo toma la cantidad y el peso total 

                         
    miércoles, 28 de agosto de 2019 14:11

Respuestas

  • hola

    >>no se si este bien pero me sale error en el where el error presenta

    porque usas el Convert.ToBoolean() ? no es necesario, el Checked ya es bool

    .Where(x => ((CheckBox)x.FindControl("chbItem")).Checked) )

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 28 de agosto de 2019 16:05
  • ya salio esa parte, con el boolean funciono, solo me falta recuperar digamos que si seleccione los 2 casillas de harina me sum la cntidad y me lo pone en un texbox y son 4 y en peso suma total de 1500 grs pero me falta solo que me ponga que agarre harina una vez, por que despues de eso, de recuperar la suma de esas 2 columns y el nombre tengo que mandar a crear un pdf con esa informacion

    miércoles, 28 de agosto de 2019 16:10
  • Sabes de alguna forma tomar el nombre de la casilla seleccionada, suma el codigo de la columna cantidad y peso pero me gustaria que tomara el nombre de lo que esta sumando solo un vez, SI EN LA TABLA EXISTE 5 REGISTROS DE HARINA QUE LOS SUME PERO QUE SOLO TOME EL NOMBRE DEL PRIMERO.

    protected void seleccionar(object sender, EventArgs e)
                    {
                      int suma = GridView1.Rows.Cast<GridViewRow>()
                      .Where(x => Convert.ToBoolean(((CheckBox)x.FindControl("chbItem")).Checked) )
                     .Sum(x => Convert.ToInt32(x.Cells[2].Text));
                        int suma2 = GridView1.Rows.Cast<GridViewRow>()
                        .Where(y => Convert.ToBoolean(((CheckBox)y.FindControl("chbItem")).Checked))
                      .Sum(y => Convert.ToInt32(y.Cells[3].Text));

                PesoTotal.Text = suma.ToString();
                         cantidadTotal.Text = suma2.ToString();
                    } 

    lunes, 2 de septiembre de 2019 13:31

Todas las respuestas

  • Hola 

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma,  te comparto  el siguiente enlace en el cual  consiste en un caso similar al que nos estas comentando

    https://social.msdn.microsoft.com/Forums/es-ES/078225fe-7c8c-43d3-9ca8-93c5f7c44268/sumar-automatico-al-seleccionar-checkbox-de-un-gridview?forum=netfxwebes

     

    Gracias por usar los foros de MSDN.

     

    Pablo Rubio

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    miércoles, 28 de agosto de 2019 15:30
    Moderador
  • hola

    >>no se si este bien pero me sale error en el where el error presenta

    porque usas el Convert.ToBoolean() ? no es necesario, el Checked ya es bool

    .Where(x => ((CheckBox)x.FindControl("chbItem")).Checked) )

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 28 de agosto de 2019 16:05
  • bueno el suma, hace algo parecido eso ya lo tengo de hecho es el codigo que anexe pero me falta recuperar el nombre de la casilla seleccionada, y no se haya un metodo que una vez seleccionado solo se pueda con el mismo nombre

    miércoles, 28 de agosto de 2019 16:08
  • ya salio esa parte, con el boolean funciono, solo me falta recuperar digamos que si seleccione los 2 casillas de harina me sum la cntidad y me lo pone en un texbox y son 4 y en peso suma total de 1500 grs pero me falta solo que me ponga que agarre harina una vez, por que despues de eso, de recuperar la suma de esas 2 columns y el nombre tengo que mandar a crear un pdf con esa informacion

    miércoles, 28 de agosto de 2019 16:10
  • Sabes de alguna forma tomar el nombre de la casilla seleccionada, suma el codigo de la columna cantidad y peso pero me gustaria que tomara el nombre de lo que esta sumando solo un vez, SI EN LA TABLA EXISTE 5 REGISTROS DE HARINA QUE LOS SUME PERO QUE SOLO TOME EL NOMBRE DEL PRIMERO.

    protected void seleccionar(object sender, EventArgs e)
                    {
                      int suma = GridView1.Rows.Cast<GridViewRow>()
                      .Where(x => Convert.ToBoolean(((CheckBox)x.FindControl("chbItem")).Checked) )
                     .Sum(x => Convert.ToInt32(x.Cells[2].Text));
                        int suma2 = GridView1.Rows.Cast<GridViewRow>()
                        .Where(y => Convert.ToBoolean(((CheckBox)y.FindControl("chbItem")).Checked))
                      .Sum(y => Convert.ToInt32(y.Cells[3].Text));

                PesoTotal.Text = suma.ToString();
                         cantidadTotal.Text = suma2.ToString();
                    } 

    lunes, 2 de septiembre de 2019 13:31