none
Campos Fijos en DataGridView RRS feed

  • Pregunta

  • Hola, a ver si alguien puede echarme una manita con esto:

    - Tengo un datagridview con 3 columas.

    - Cuando voy a meter una nueva fila, la columna 1 y la columna 2 DEBEN ser iguales a dos valores que figuran en otros dos textBox que hay en el formulario y NO pueden ser otros valores. Es decir, forzosamente la col 1 y la col 2 ddel DGV deben valer lo que pone en el textbox1 y en el textbox2.

    Quiero que cuando el usuario vaya a meter una fila, automáticamente rellene esas dos primeras columnas y ponga el foco en la tercera columna que es la que cambia.

    Muchas gracias por adelantado

    miércoles, 10 de junio de 2015 9:26

Respuestas

  • Deberías establecer la propiedad ReadOnly de las dos primeras columnas a true y establecer sus valores en el evento DefaultValuesNeeded del DataGridView.

    Si además estableces la propiedad EditMode en EditOnEnter conseguirías el efecto que quieres al editar una fila y pulsar Enter: pasaría a la nueva fila entrando en modo edición en la tercera columna.

        Private Sub DataGridView1_DefaultValuesNeeded(sender As Object, e As DataGridViewRowEventArgs) Handles DataGridView1.DefaultValuesNeeded
            e.Row.Cells("Column1").Value = TextBox1.Text
            e.Row.Cells("Column2").Value = TextBox2.Text
        End Sub

    • Marcado como respuesta JotaQ miércoles, 10 de junio de 2015 11:48
    miércoles, 10 de junio de 2015 9:56

Todas las respuestas

  • Deberías establecer la propiedad ReadOnly de las dos primeras columnas a true y establecer sus valores en el evento DefaultValuesNeeded del DataGridView.

    Si además estableces la propiedad EditMode en EditOnEnter conseguirías el efecto que quieres al editar una fila y pulsar Enter: pasaría a la nueva fila entrando en modo edición en la tercera columna.

        Private Sub DataGridView1_DefaultValuesNeeded(sender As Object, e As DataGridViewRowEventArgs) Handles DataGridView1.DefaultValuesNeeded
            e.Row.Cells("Column1").Value = TextBox1.Text
            e.Row.Cells("Column2").Value = TextBox2.Text
        End Sub

    • Marcado como respuesta JotaQ miércoles, 10 de junio de 2015 11:48
    miércoles, 10 de junio de 2015 9:56
  • hola

    podrias usar el evento

    RowsAdded

    con este podrias definir el valore de las celdas

    private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
        DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
    	
    	row.Cells[0].Value = TextBox1.Text;
    	row.Cells[1].Value = TextBox2.Text;
    }

    Nota: recuerda mencionar en que lenguaje estas programando

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 10 de junio de 2015 11:52