none
Me Cambia Valor Numérico DataGridView RRS feed

  • Pregunta

  • Buen Dia; verán tengo un datagridview que lleno a través de una consulta similar a la siguiente:

    SELECT

                me_campo1,CAST(me_campo2 AS int) AS me_campo2

    FROM me_table

     

    Y ya en la aplicación deseo que sea modificable la columna “me_campo2” pero al momento de escribir en el datagridview me cambia los datos, es decir si escribo 1 al momento de dejar la celda me lo cambia por 49, el 2 por 50 … me podrían ayudar a descifrar porque pasa esto?

    viernes, 11 de agosto de 2017 17:12

Respuestas

  • hola

    alli veo que asignas el EditingControlShowing, pero donde quitas el evento ?

    [DataGridView] – Texto Celdas en Mayúscula

    la idea es que asignes el evento a las celdas de una determinada columna y que antes de asociar primero lo quites

    Ademas en el CellEndEdit veo que estas asignando un valor, eso esta raro

    dtgv.Rows[indexRow].Cells[indexColumn].Value = valor[0];

    que pasa si quitas esa linea

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta L - J - R viernes, 11 de agosto de 2017 18:07
    viernes, 11 de agosto de 2017 17:50

Todas las respuestas

  • hola

    es raro lo que planteas, pero estos valores que mencionas 49, 50 son los datos originales que tenia la celda?

    asignas algun evento del grid como ser el CellEndEdit o similar?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 11 de agosto de 2017 17:19
  • Saludos Leandro,

    De echo las celdas me las trae nullas

    Si asigno 2 eventos en la celda para validacion de texto numerico y accion al final de escribrir:

     private void dtgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
      {
          e.Control.KeyPress += new KeyPressEventHandler(miTextKeyPress);
      }

    private void miTextKeyPress(object sender, KeyPressEventArgs e)
     {
          if (Char.IsDigit(e.KeyChar))
         {
             switch (e.KeyChar)
            {
                 case '0': e.Handled = false;
                 break;
                 case '1': e.Handled = false;
                 break;
                 case '2': e.Handled = false;
                 break;
                 case '3': e.Handled = false;
                 break;
                 default: e.Handled = true;
                 break;
            }
        }
        else if (Char.IsControl(e.KeyChar))
        {
           e.Handled = false;

          }
        else
       {
            e.Handled = true;
        }
     }

    private void dtgv_CellEndEdit(object sender, DataGridViewCellEventArgs e)
     {
         try
        {
           Char[] valor = dtgv.Rows[indexRow].Cells[indexColumn].Value.ToString().ToCharArray();
           dtgv.Rows[indexRow].Cells[indexColumn].Value = valor[0];
         }
        catch (Exception)
       {
          dtgv.Rows[indexRow].Cells[indexColumn].Value = 0;
        }
    }

    viernes, 11 de agosto de 2017 17:35
  • hola

    alli veo que asignas el EditingControlShowing, pero donde quitas el evento ?

    [DataGridView] – Texto Celdas en Mayúscula

    la idea es que asignes el evento a las celdas de una determinada columna y que antes de asociar primero lo quites

    Ademas en el CellEndEdit veo que estas asignando un valor, eso esta raro

    dtgv.Rows[indexRow].Cells[indexColumn].Value = valor[0];

    que pasa si quitas esa linea

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta L - J - R viernes, 11 de agosto de 2017 18:07
    viernes, 11 de agosto de 2017 17:50
  • sube tu codigo donde haces el cambio de seguro no usas rows comienzan desde 0  seguro el tuyo inicia desde 1 por eso el intervalo de 1 .

    Sube tu codigo con que actualizas tu datagridview


    Pasa los puntos prro v:

    viernes, 11 de agosto de 2017 18:05
  • Correcto gracias lo raro lo hacia la asignacion de valor

    dtgv.Rows[indexRow].Cells[indexColumn].Value = valor[0];

    solo le coloque .ToString() al final y se resolvio mi problema

    viernes, 11 de agosto de 2017 18:07