none
Cambio de valor en el campo cantidad RRS feed

  • Pregunta

  • Hola, aquí estoy de nuevo para intentar resolver con vuestra ayuda una cuestión que le vengo dando vueltas y no doy con la solución.

    En un Datagridview se van cargando los ítems para la venta a través de un código escaneado y manualmente le agrego la cantidad a cada ítem antes de ingresarlo en el Datagridview (que esta enlazado a un Data Table), hace el cálculo del precio de venta por la cantidad y lo agrega a un campo llamado subtotal.

    ¿Como puedo a hacer que, al repetirse un código, modifique el valor de la cantidad por una nueva en esa misma celda del Datagridview?

    Es decir, si la celda esta con valor “1”, poder ponerlo, por ejemplo “3” y por supuesto después recalcular el subtotal. Pero el calculo no es problema ya lo he conseguido hacer.

    Posicionarme en la celda, ya lo consigo, pero no el cambio de valor de la cantidad.

     foreach(DataGridViewRow row indataListadoDetalle.Rows)

     {

           intposicion = row.Index;

     

          if(Convert.ToString(row.Cells["codigo"].Value = txtCodigo_articulo.Text)

     

      {

     

          dataListadoDetalle.CurrentCell = dataListadoDetalle.Rows[posicion].Cells[3];

     

      MensajeError("El artículo, ( "+ txtArticulo.Text + " ) ya está incluido en la    venta !!!");

      }

    Gracias anticipadas por vuestro tiempo.

    Un saludo, Joaquim

    jueves, 26 de marzo de 2020 21:47

Todas las respuestas

  • Hola JoaquimVL

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, vamos a darte seguimiento e investigaremos para buscar la mejor respuesta para ti.

     

    Gracias por usar los foros de MSDN.

     

    Luis Diego Mora

     ____

     

    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.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 26 de marzo de 2020 22:10
    Moderador
  • Por fin encontré una solución,

    cambie de posición la línea que selecciona la celda y después de seleccionar el datagridview, lanzo el evento:

    CellEndEdit.

    Pongo el código con las operaciones de recalculo, por si sirve de ayuda a otros colegas.

    foreach (DataGridViewRow row in dataListadoDetalle.Rows)

    {

           int posicion = row.Index;

     

           if (Convert.ToString(row.Cells["codigo"].Value) == txtCodigo_articulo.Text)

           {        

             MensajeError("El artículo, ( " + txtArticulo.Text + " ) ya está incluido en la venta !!!");

     

             dataListadoDetalle.CurrentCell = dataListadoDetalle.Rows[posicion].Cells[3];

             dataListadoDetalle.Select();

            }

     }

     

     

     

     

    private void dataListadoDetalle_CellEndEdit(object sender, DataGridViewCellEventArgs e)

    {

           decimal suma = 0;

     

    decimal subTotal = Convert.ToDecimal(dataListadoDetalle.CurrentRow.Cells[3].Value) * Convert.ToDecimal(dataListadoDetalle.CurrentRow.Cells[4].Value);

          

    dataListadoDetalle.CurrentRow.Cells[7].Value = subTotal;

     

                foreach (DataGridViewRow row in dataListadoDetalle.Rows)

                {

                    decimal precio = 0;

                    precio = Convert.ToDecimal(row.Cells["Subtotal"].Value);

                    suma += precio;

                }

     

                lblTotal_Pagado.Text = "Total venta: R$ " + string.Format("{0:##,#0.00}", suma);

                totalPagado = suma;

     

                LimpiarDetalle();

                btnBuscarArticulo.Enabled = true;

                btnBuscarArticulo.Select();

            }

    Si alguien encuentra otra solución, por favor ponerla aquí para que sirva de ayuda.

    Un saludo para todos, JoaquimVL


    martes, 31 de marzo de 2020 12:38