none
Mostrar todos los datos de una tabla en una BD en un DataGridView, según la opción elegida en un ComboBox RRS feed

  • Pregunta

  • Buenas, espero todos se encuentren bien.
    Por mas que busque y busque no encontré alguna solución a lo que requiero.

    Tengo una tabla en la base de datos con los campos (int)"IdServicio", (varchar)"NombreServicio"y (int)"PrecioServicio".

    En el ComboBox cargo los datos con un DataSet. (código)

    ////////////////////////////////////////////

                

    public System.Data.DataSet ServiceList()
            {
                System.Data.DataSet lista = new System.Data.DataSet();
                SqlConnection connection = new SqlConnection(this.StringConnection);
                SqlCommand command = new SqlCommand();
                SqlDataAdapter adapter = new SqlDataAdapter();

                command.CommandText = "Select * from [Vp_ServicesList]";
                connection.Open();
                command.Connection = connection;
                command.CommandType = System.Data.CommandType.Text;

                adapter.SelectCommand = command;
                adapter.Fill(lista);

                return lista;
            }

    ---------------------------------

    private void LoadComboBox()
            {
                try
                {
                    this.Servicios_ADO = new Cls_Servicios_ADO(ConfigurationManager.ConnectionStrings["StringConnection"].ConnectionString);

                    this.ctrServices1.CbxServicios.DataSource = Servicios_ADO.ServiceList().Tables[0];
                    this.ctrServices1.CbxServicios.DisplayMember = "Nombre";
                    this.ctrServices1.CbxServicios.ValueMember = "Monto del servicio";

                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message, "Error al cargar los datos", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

    ////////////////////////////////////////////

    Hasta aquí todo bien, pero soy consiente de que no estoy indicándole el "IdServicio" en ningún momento y ello es lo que no logro hacer.

    Si agrego un servicio elegido en el comboBox el me muestra en el Dgv el nombre del servicio, el precio del servicio mas la operación del mismo por la cantidad.

    Ejemplo de las columnas del Dgv.

    Codigo - Servicio - Cantidad - Precio Unitario - Monto Total

    Aquí quiero el Id - Parqueo - 2 - 1000 - 2000

    Como podría mostrar el ID en el campo Código del Dgv..?

    Espero haberme explicado bien y les agradezco desde ya la ayuda brindada.


    • Editado Kleiton CB viernes, 9 de agosto de 2019 3:38 Falto Ejemplo
    viernes, 9 de agosto de 2019 3:35

Todas las respuestas

  • Hola   Kleiton CB

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma,  te comparto a continuación el siguiente enlace 

    https://docs.microsoft.com/es-es/dotnet/framework/winforms/controls/bind-data-to-the-datagrid-using-the-designer

     

    Gracias por usar los foros de MSDN.

     

    Pablo Rubio

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

     

     

     

     

    viernes, 9 de agosto de 2019 15:24
    Moderador
  • Hola Kleiton

    Para acceder al campo IdServicio, de una determinada fila, teniendo la tabla 

    Servicios_ADO.ServiceList().Tables[0],

    es así:

    DataTable tabla = Servicios_ADO.ServiceList().Tables[0];

    int Id = tabla.Rows[indiceFila].Field<int>(0);

    Si fuera un string en la 3ra posición, sería

    string str = tabla.Rows[indiceFila].Field<string>(2);

    PODES llenar el DGV una por una las filas, o enlazando directamente el DataTable (tabla) a su DataSource, o enlazando cada campo uno por uno a cada columna

    Saludos

    Pablo

    PD: Me parece que te estás complicando con el código, ... una de las cosas es que es muy raro que en el ValueMember vaya algo q no sea el campo ID

    sábado, 10 de agosto de 2019 2:21
  • Hola Pablo, gracias por tu respuesta pero creo que entonces si formule la pregunta de forma incorrecta o no me supe explicar.

    El Dgv se llenaría según la opción que elija en el ComboBox.

    Pero logro ingresar los datos del nombre y precio, menos el del id, de la tabla que tengo en la Bd.

    sábado, 10 de agosto de 2019 4:06
  • Hola Tigre Pablito,

    PD: Me parece que te estás complicando con el código, ... una de las cosas es que es muy raro que en el ValueMember vaya algo q no sea el campo ID

    En todas las búsquedas que he realizado he visto que en el ValueMember utilizan el id, en efecto, para luego a la hora de guardar en la BD se guarde el Id, que justamente es lo que quiero hacer, guardar luego solo el id del servicio en otra tabla.

    Solo que de la misma manera no logro acceder a los datos del Precio de cada servicio.

    PODES llenar el DGV una por una las filas, o enlazando directamente el DataTable (tabla) a su DataSource, o enlazando cada campo uno por uno a cada columna
    El Dgv se llenaría según la opción que elija en el ComboBox.

    sábado, 10 de agosto de 2019 4:13
  • Hola Kleiton

    Pudiste solucionarlo? No había visto tu respuesta

    Si no, 

    Veo que en la consulta de tu dataSet incluis todos los campos (select * from) ...

    O sea, en tu dataSet, en Tables[0], están todos los campos, el Id, el nombre, y el precio

    Que uses ese DataTable como DataSource del comboBox, no debería impedirte que lo uses también como DataSource del DGV

    Te sugiero que pongas el Id como ValueMember

    Si tenes que enlazar los campos del DataTable con una determinada columna, podes enlazar columna por columna, con la propiedad DataPropertyName = "nombreDeColumna";

    Si seguís sin resolverlo, podes explicarme en que falla, y/o pasarme el código de como llenas el DGV (que aunque dependa de la opción del comboBox, no va a ser esencialmente muy diferente en cada caso)

    Saludos

    Pablo

    sábado, 17 de agosto de 2019 1:37