none
Cómo utilizar una celda de un DataGridView que está definida como un DataGridViewComboBoxColumn en la propiedad ColumnType? RRS feed

  • Pregunta

  • Hola Todos,

    Quisiera tener de manera sencilla una explicación de "Cómo utilizar una celda de un DataGridView que está definida como un DataGridViewComboBoxColumn  en la propiedad ColumnType?"

    Mi problema es este: trabajo en una aplicacion forms, con arquitectura n-capas. Tengo un formulario Maestro-e tengo un DataGridView llamada dgvDetalle, así :

    Necesito que cuando seleccione un item del primer combo (Empaq.)  llame un función en la capa de Acceso a datos (xxxxDAL)y traiga la descripción y otro dato que no muestro en la grid. y cuando seleccione el 2o. combo (Fruta) llame una función en FrutasDAL y traiga datos para mostrar en las columnas P.Compra y P.Vta.

    He tenido un problema a la otra de añadir una fila al DataGridView y me adiciona la fila al comienzo y no al final (esto solo cuando enlacé cada columna mediante el asistente con datos en la propiedad DataPropertyName). Pero si no los tengo enlazado a datos me funciona bien, solo que tengo problema a la hora de traer los datos mediante una consulta al documento (maestro-detalle) almacenado en la DB.

    No sé que estoy haciendo mal. La verdad es que es primera vez que trabajo con vb.net 2010.

    Agradezo su valiosa ayuda y comentarios que puedieran darme. Tambien remitirme a articulos que expliquen de manera sencilla estas cosas, tipo ABC (principiante).

    Gracias,


    Solph.


    Solph.

    viernes, 16 de marzo de 2012 11:44

Todas las respuestas

  • a pregunta ya esta abierta en el foro de vb.net

    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/05355689-115a-481d-b687-4751e90f0820


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 16 de marzo de 2012 12:20
  • Sí Leandro, pero como expliqué allí:

    la modifiqué, pues quizá no resultaba tan clara y no fuera a confundirse... pensé esto, pues no he obtenido más respuestas...

    Aprovecho y te pregunto algo...

    en uno de los ejemplos que tienes en el blog (DataGridViewColumn).  Tienes este código en el evento LOAD:

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
            '
            ' Asigno los datos del combo de marcas
            '
            Dim comboboxColumn As DataGridViewComboBoxColumn = TryCast(dataGridView1.Columns("Marca"), DataGridViewComboBoxColumn)
            comboboxColumn.DataSource = ProductosDAL.GetAllMarca()
            comboboxColumn.DisplayMember = "Descripcion"
            comboboxColumn.ValueMember = "IdMarca"

    y luego en otro evento tienes esto:

     Private Sub dataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles dataGridView1.CellValueChanged
    If dataGridView1.Columns(e.ColumnIndex).Name = "Descuento" Then
                dataGridView1_CurrentCellDirtyStateChanged(sender, New EventArgs)
                SendKeys.Send(Chr(Keys.Tab))
                        '
                       ' se obtiene el valor seleccionado en el combo
                        '
                Dim combo As DataGridViewComboBoxCell = TryCast(dataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewComboBoxCell)
                Dim id_descuento As Integer = Convert.ToInt32(combo.Value)

    No entiendo algo, si en el load defines COMBOBOXCOLUMN no lo vuelves a utilizar, antes defines otro objeto.

    ¿y los datos cargados en comboboxcolumn? ¿como hace el objeto Combo para saber los datos que contiene comboBoxColumn?

    Gracias,


    Solph.

    viernes, 16 de marzo de 2012 12:33