none
Controlar edicion datagridview RRS feed

  • Pregunta

  • Saludos tengo una duda, digamos que el usuario edita una celda de una columna numerica de un datagridview, ingresando letras, como la actualizacion a la bd la realizo en el evento CellEndEdit, obviamente me salta un error, ¿hay alguna forma de evitar la actualización, mandar un messagebox y dejar el valor anterior?

     

    Muchas gracias por su pronta respuesta.


    domingo, 3 de abril de 2011 20:30

Respuestas

  • hola

    podrias usar el evento Validating del DataGridView

    Cómo: Validar datos en el control DataGridView de formularios Windows Forms

    algo como esto

     

    private void dataGridView1_CellValidating(object sender,DataGridViewCellValidatingEventArgs e)
    {
       
        if (dataGridView1.Columns[e.ColumnIndex].Name == "NombreColumna")
        {
            string valorCelda = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
            int valorNumerico = 0;
            if (!int.TryParse(valorCelda, out valorNumerico))
            {
                dataGridView1.Rows[e.RowIndex].ErrorText ="El campo solo acepta valores numericos";
                e.Cancel = true;
            }
        }
    }

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 3 de abril de 2011 21:50

Todas las respuestas

  • hola

    podrias usar el evento Validating del DataGridView

    Cómo: Validar datos en el control DataGridView de formularios Windows Forms

    algo como esto

     

    private void dataGridView1_CellValidating(object sender,DataGridViewCellValidatingEventArgs e)
    {
       
        if (dataGridView1.Columns[e.ColumnIndex].Name == "NombreColumna")
        {
            string valorCelda = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
            int valorNumerico = 0;
            if (!int.TryParse(valorCelda, out valorNumerico))
            {
                dataGridView1.Rows[e.RowIndex].ErrorText ="El campo solo acepta valores numericos";
                e.Cancel = true;
            }
        }
    }

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 3 de abril de 2011 21:50
  • Lo siento pero no sé porque no funciona el código...

      private void DtgvBus_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)

            {

                if (DtgvBus.Columns[e.ColumnIndex].Name == "CodigoProducto")

                {

                    string valorCelda = Convert.ToString(DtgvBus.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);

                    int valorNumerico = 0;

                    if (!int.TryParse(valorCelda, out valorNumerico))

                    {

                        DtgvBus.Rows[e.RowIndex].ErrorText = "El campo solo acepta valores numericos";

                        e.Cancel = true;

                    }

                }

            }

     


    domingo, 3 de abril de 2011 21:58