none
REGISTRAR DATOS DE UN DATAGRIDVIEW MODIFICABLE RRS feed

  • Pregunta

  • Buenas tardes.. quisiera insertar datos a través de un datagridview que contiene combobox y textbox..
    Alguna idea o recomendacion de como puedo hacer esto??.. gracias.. :)


    Jokesito

    martes, 20 de noviembre de 2012 20:51

Todas las respuestas

  • insertar datos donde ? en uan base de datos? si es asi cual seria?

    recuerda aportar informacion completa para que se peuda ayudar


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 21 de noviembre de 2012 6:33
  • Pues sí sería bueno saber cuál es el destino, pero sea cual sea el destino, idealmente usted trabaja con una capa de negocio que define una o más clases que representan los datos en ese destino (que suele ser una base de datos).

    Asumiré que hay una clase como la siguiente que representa un registro en ese DGV que nos muestra:

    public class RegistroAsistencia //Adivinando un poco el nombre
    {
        public DateTime? Fecha { get; set; }
        public char Estado { get; set; }
        public string Observaciones { get; set; }
        public bool Asistencia { get; set; }
        public MotivosAusencia Motivo { get; set; }
    }
    //MotivosAusencia puede ser una clase aparte o algo simple como un enum:
    public enum MotivosAusencia : byte
    {
        //Es buena práctica nunca usar el valor cero.  Dejarlo para señalizar un valor inválido.
        //Hay otros caminos si definitivamente necesita el cero.
        Desconocido = 0,
        Vacaciones = 1,
        Sancion = 2
    }

    Los ComboBox estándar y la columna ComboBox del DGV permiten un DataSource y escoger la propiedad que representa el texto y la propiedad que representa el valor.  Aprovechamos esto más el hecho de que podemos usar el valor 0 del enum como valor inválido:

    //Preparamos una lista de objetos dinámicos:
    List<dynamic> motivos = new List<dynamic>()
    {
        new { Texto = "--Seleccione--", Valor = MotivosAusencia.Desconocido }
        , new { Texto = "Vacaciones", Valor = MotivosAusencia.Vacaciones }
        , new { Texto = "Sanción", Valor = MotivosAusencia.Sancion }
    };
    DataGridViewComboBoxColumn c = dgv1.Columns["Motivo"] as DataGridViewComboBoxColumn;
    c.DisplayMember = "Texto";
    c.ValueMember = "Valor;
    c.DataSource = motivos;

    Ahora simplemente faltaría asignar la fuente de datos:  Agregue un BindingSource al formulario y úselo como DataSource para el DGV.  Luego en código cree un List<RegistroAsistencia> que contenga los registros relevantes (o que esté en blanco) y úsela como DataSource del componente BindingSource.

    Esto debería llevarlo a un punto donde la lista asignada contiene objetos RegistroAsistencia que representan los registros en el DGV adecuadamente.  Únicamente le faltaría validar que el valor de la propiedad Motivo no sea MotivosAusencia.Desconocido a la hora de aceptar el registro.


    Jose R. MCP
    Code Samples

    miércoles, 21 de noviembre de 2012 7:07
  • Ola y muchas gracias por responder...
    Estoy trabajando con Visual Basic y SQL Server 2008...

    Solo uso la imagen de referencia para que puedan observar
    los campos y elementos que voy a usar... (checkbox, combobox, etc)...

    Mi duda es si se registra y muestra de la misma manera que si lo registrara y mostrara
    de un textbox y combobox fuera del DGV.. Es la primera vez que veo
    este tipo de casos..

    Muchas Gracias.. :D


    Jokesito

    miércoles, 21 de noviembre de 2012 15:57
  • muchas gracias.. 
    alguna pagina que me recomiende para ver estos
    tipos de ejemplos del datagridview con componentes internos?

    muchas gracias..


    Jokesito

    miércoles, 21 de noviembre de 2012 15:59