none
Como obtener un dato del registro seleccionado en una tabla?

    Pregunta

  • Hola, estoy haciendo una aplicacion donde utilizo una tabla carreras, y alumnos. Para la edición de la tabla carreras usé un BindingNavigator, y una Grid para ver los datos. Al hacerlo el VS2008 me creó varios controles:

    - miAppDataSet
    - carrerasBindingSource
    - carrerasTableAdapter
    - tableAdapterManager
    (Y la verdad no estoy seguro de que hace cada uno, o en que ocaciones los debo de usar)

    Tuve que hacer mi propio botón de eliminar en el BindingNavigator para poder tener más control de lo que hace mi aplicación. Entonces lo que pasa es que no quiero que se pueda borrar una carrera, mientras que un alumno esté relacionado con ella, de manera que quiero obtener antes de eliminar, la lista de dichos alumnos. Para eso hice esto en LinQ:

    List<Alumno> QueryAlumnos =
    (from alumno in
     dataDC.Alumnos
    where (alumno.A_carrera == carreraToDelete.C_idCarrera)
    select alumno).ToList();
    

    Donde dataDC es un objeto de DataClasses1DataContext, que es un diagrama de DataClasses que agregué para poder usar LinQ... Y carreraToDelete debería ser la carrera actualmente seleccionada.

    La consulta funciona, pero el problema es que no encuentro como hacer que carreraToDelete sea la carrera seleccionada , he hecho varios intentos y lo unico que logro es hacer referencia al ranglon (que es un objeto DataRow si mal no recuerdo) en vez de obtener un objeto tipo Carrera.



    Estoy frustrado >.< no se si estoy mezclando cosas que no se pueden mezclar por eso de estar usando objetos y clases para usar la base de datos, y al mismo tiempo el dataSource normal que creé para usar el BindingNavigator...

    Si tan solo pudiera obtener el valor del campo llave del registro seleccionado con la tabla (o con el bindingNavigator, que a fin de cuentas sería el mismo), podría asignarselo al atributo C_idCarrera de mi objeto carreraToDelete que es de tipo Carrera.


    O no se, si conocen una mejor manera de hacer todo esto me sería de mucha ayuda si me quisieran ayudar. Saludos
    • Editado Juanfra 3 lunes, 29 de junio de 2009 18:08
    lunes, 29 de junio de 2009 18:06

Respuestas

  • incluye la columna del id de la carrera en el datasource, sino quires mostrarla puedes personalizar el datagrid para que no se vea.

    y luego accedes a ella asi (suponiendo que sea la columna id 0 y que sea numerica):

    (int)dataGridView1.SelectedRows[0].Cells[0].Value

     




    Colabora con la comunidad, si éste mensaje te ha sido de utilidad, márcalo como respuesta correcta.
    Juan Carlos Ruiz Pacheco
    Ingeniero de Sistemas
    Microsoft MVP C#
    MCP,MCTS,DCE+Platino,OCA,OCP
    Blog Técnico
    viernes, 03 de julio de 2009 22:23
    Moderador