DataGridView ComboBox en C#

Jose Otniel Camilo Caines 0 Puntos de reputación
2024-01-23T19:58:57.1533333+00:00

Buenas, estoy desarrollando un sistema de ventas y tengo el siguiente problema. Tengo un DGV con una columna tipo combobox; entonces quiero que al agregar un nuevo producto el de esa primera fila tenga sus precios correspondientes, y si lleno otra fila, tenga sus precios correspondientes sin que la fila anterior pierda sus precios. De momento he podido hacer la parte de cargar los datos a la columna combobox con este código:

        private void dgvFactura_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            string srch = "Select Tipo from DetArticulos where CodigoArt = '" + dgvFactura.CurrentRow.Cells["Codigo"].Value.ToString() + "'";
            DataGridViewComboBoxColumn Tipo = dgvFactura.Columns["Unidad"] as DataGridViewComboBoxColumn;
            Tipo.DataSource = funcion.CargarCombo(srch);
            Tipo.DisplayMember = "Tipo";
        }

En fin, me da problemas cuando agrego un segundo producto.

SQL Server
SQL Server
Familia de sistemas de análisis y administración de bases de datos relacionales de Microsoft para soluciones de comercio electrónico, línea de negocio y almacenamiento de datos.
129 preguntas
Sin supervisión
Sin supervisión
Etiqueta no supervisada por Microsoft.
216 preguntas
0 comentarios No hay comentarios
{count} votos

1 respuesta

Ordenar por: Muy útil
  1. Jonathan Pereira Castillo 13,430 Puntos de reputación Proveedor de Microsoft
    2025-01-22T21:24:52.2366667+00:00

    ¡Hola Jose Otniel Camilo Caines!

    Esperamos que este mensaje te encuentre bien.

    Lamentamos sinceramente la demora en abordar tu tema en este foro.

    Para que cada fila del DataGridView mantenga sus precios correspondientes sin afectar a las demás, puedes usar el evento CellEndEdit para actualizar los datos del ComboBox solo para la fila actual. Aquí tienes un ejemplo:

    private void dgvFactura_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == dgvFactura.Columns["Codigo"].Index)
        {
            string srch = "Select Tipo from DetArticulos where CodigoArt = '" + dgvFactura.Rows[e.RowIndex].Cells["Codigo"].Value.ToString() + "'";
            DataGridViewComboBoxCell comboCell = (DataGridViewComboBoxCell)dgvFactura.Rows[e.RowIndex].Cells["Unidad"];
            comboCell.DataSource = funcion.CargarCombo(srch);
            comboCell.DisplayMember = "Tipo";
        }
    }
    

    Este código asegura que solo se actualice el ComboBox de la fila editada, manteniendo los datos de las otras filas intactos. ¡Espero que esto te ayude!

    Si no recibimos una respuesta tuya en los próximos días, procederemos a cerrar el tema. Sin embargo, queremos asegurarte que siempre estamos disponibles para cualquier asistencia que puedas necesitar.

    Agradecemos tu comprensión y estamos aquí para ayudar en lo que sea necesario.

    Estaré atento a tu respuesta.,

     Jonathan

    ----------*

    Tu opinión es muy importante para nosotros! Si esta respuesta resolvió tu consulta, por favor haz clic en ''. Esto nos ayuda a mejorar continuamente la calidad y relevancia de nuestras soluciones.

    0 comentarios No hay comentarios

Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.