none
Recoger datos de una fila de un DataGrid

    Pregunta

  • Hola a tod@s:

    Tengo una dudilla sobre los complicados DataGrid de WindowsForm sobre C#.

    Quiero sacar dos valores de una fila, de tal modo que el usuario pinche en una fila, para detectarla, para desde ahí sacar los 2 valores que necesito.

    ¿Es posible?

    Gracias de antemano ;)
    jueves, 15 de febrero de 2007 18:16

Respuestas

  • Hola, El DataGridView parece un poco complicado al principio, con un poco de paciencia verás que no es tan complicado y es realmente poderoso.

    Respecto a tu pregunta, te planteo una posible solución.

    Un primer aspecto a tener en cuenta es que deberás acceder a las columnas por su nombre, asi que asegúrate de nombrarlas adecuadamente en el editor de columnas.

    Segundo, debes manejar el evento RowEnter (del datagridView), y puedes usar el siguiente código para obtener el valor de una columna.

    int valor1 = (int)datagridView1.CurrentRow.Cells["NombreColumna"].Value;

    Ten en cuenta que la propiedad Value siempre te va a devolver un objeto, asi que debes hacer la conversión adecuada antes de poder trabajar con el dato.

    Espero esto sea lo que estás buscando, y si no, solo nos dices, seguro encontraremos la solución.

    Saludos, y Feliz Carnaval

    --------------------
    J. Marcos Troncoso
    Cochabamba - Bolivia



    viernes, 16 de febrero de 2007 14:47
  • Hola  Marcos.

    El dataGrid que yo uso (no se que es un datagridView, me imagino que lo mismo para ASP.NET ) no detecta la propiedad CurrentRow,de todas formas no importa, pq he utilizado el dataSet que carga el DataGrid para sacar los valores, de tal forma que si borra una fila, para no haber problemas, borro el datagrid y si el usuario quiere, lo vuelva a cargar.
    Hice esto, por si sirve a alguien:

        if(this.dataGrid1.DataBindings.Count==0)
                {
                    // No hay vinculación con el dataGrid. Nos salimos.
                    return;
                }
                try
                {
                    fechaI = Convert.ToDateTime(dsAc.Tables["Estado"].Rows[fila][1]);
                    fechaF = Convert.ToDateTime(dsAc.Tables["Estado"].Rows[fila][2]);
                }
                catch
                {
                    //si surge cualquier incoveniente, que se pueda seguir ejecuanto el programa
                    MessageBox.Show("Sucedió algún error. \n No se puede mostrar el calendario.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
    sábado, 17 de febrero de 2007 10:07

Todas las respuestas

  • Hola, El DataGridView parece un poco complicado al principio, con un poco de paciencia verás que no es tan complicado y es realmente poderoso.

    Respecto a tu pregunta, te planteo una posible solución.

    Un primer aspecto a tener en cuenta es que deberás acceder a las columnas por su nombre, asi que asegúrate de nombrarlas adecuadamente en el editor de columnas.

    Segundo, debes manejar el evento RowEnter (del datagridView), y puedes usar el siguiente código para obtener el valor de una columna.

    int valor1 = (int)datagridView1.CurrentRow.Cells["NombreColumna"].Value;

    Ten en cuenta que la propiedad Value siempre te va a devolver un objeto, asi que debes hacer la conversión adecuada antes de poder trabajar con el dato.

    Espero esto sea lo que estás buscando, y si no, solo nos dices, seguro encontraremos la solución.

    Saludos, y Feliz Carnaval

    --------------------
    J. Marcos Troncoso
    Cochabamba - Bolivia



    viernes, 16 de febrero de 2007 14:47
  • Hola  Marcos.

    El dataGrid que yo uso (no se que es un datagridView, me imagino que lo mismo para ASP.NET ) no detecta la propiedad CurrentRow,de todas formas no importa, pq he utilizado el dataSet que carga el DataGrid para sacar los valores, de tal forma que si borra una fila, para no haber problemas, borro el datagrid y si el usuario quiere, lo vuelva a cargar.
    Hice esto, por si sirve a alguien:

        if(this.dataGrid1.DataBindings.Count==0)
                {
                    // No hay vinculación con el dataGrid. Nos salimos.
                    return;
                }
                try
                {
                    fechaI = Convert.ToDateTime(dsAc.Tables["Estado"].Rows[fila][1]);
                    fechaF = Convert.ToDateTime(dsAc.Tables["Estado"].Rows[fila][2]);
                }
                catch
                {
                    //si surge cualquier incoveniente, que se pueda seguir ejecuanto el programa
                    MessageBox.Show("Sucedió algún error. \n No se puede mostrar el calendario.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
    sábado, 17 de febrero de 2007 10:07
  • Hola, como menciona jmarcost puedes usar el evento RowEnter del DataGridView. Si te fijas en los parámetros del evento. tienes uno, DataGridViewCellEventArgs e, que te indica las celdas de fila donde has pulsado con el ratón. Para coger los valores simplemente tienes que poner:

    // Obtienes el valor de la primera columna de la fila donde se pulso.

    clienteseleccionado = DatosdataGridView.Rows[e.RowIndex].Cells[0].Value.ToString();

    Saludos.

    domingo, 18 de febrero de 2007 11:41
  • Hola, que bueno que hayas resuleto tu problema.

    Solo queria decirte que el control DataGridView es propio de Windows Forms y es el sucesor del DataGrid. Asi que te recomiendo le des una mirada, porque trae muchas ventajas sobre sus antecesores.

    Saludos y Feliz Carnaval

    -------------------
    J. Marcos Troncoso
    Cochabamba - Bolivia

     

     

    lunes, 19 de febrero de 2007 1:03
  • De echo creo que en el vs 2005 ya no viene el datagrid sino el datagridview aunque siguen siendo compatibles.
    lunes, 19 de febrero de 2007 11:57
  • Hola.

    Presento el mismo problema que no me muestra las propiedades del datagrid. Hice lo que plantea en su referencia de código. No entiendo porque "this.dataGrid1.DataBindings.Count" me retorna el valor de cero siendo que tengo el datagrid lleno con información. Mi pregunta es si "this.dataGrid1.DataBindings.Count" qué valor hace referencia??

     

    De antemano muchas gracias

     

    sábado, 21 de enero de 2012 23:22