none
Item Seleccionado con combobox

    Pregunta

  • En el siguiente codigo:

      

      DataSet dtbase = new DataSet();

     

    //Abro la conexion y lleno el dataset

     

    cmbmodelo.DataSource = dtbase.Tables[0];

                 cmbmodelo.DisplayMember = "Modelo";

                 cmbmodelo.ValueMember = "articulo";

     

    lo que no puedo lograr es que al seleccionar un item en el combobox, pueda mostrar el resto de los campos de la fila del dataset donde estoy parado, en otros controles. 

    Esto es, al seleccionar, necesito mostrar los otros campos de la fila en varios labels.

     

    intento con esto, pero necesito ubicarme en la fila seleccionada

     

    this.label1.Text = dtbase.Tables[0].Rows[0]["Cilindro"].ToString();

     

    debo hacer un bucle para buscarla? o existe otra forma

     

    Gracias

     

     


    Phil
    domingo, 27 de febrero de 2011 22:42

Respuestas

  • hola

    es que si asignas un ValueMember solo obtendras ese valor que has definido

    revisa este articulo

    [Winforms] Como usar el SelectedValue

    alli explico como poder hacer esto que mencionas, poder tomar e Datarow que se bindea a cada item

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta philbahia lunes, 28 de febrero de 2011 16:26
    domingo, 27 de febrero de 2011 22:58
  • Hola , como un aporte mas a lo que te sugiere Leandro quizas te pueda ser útil el uso de DataBindings.

    Un ejemplo de código sería este

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.Sql;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Collections;
    
    
    namespace ejemplobinding
    {
     public partial class Form1 : Form
     {
     DataTable dt = new DataTable();
     public Form1()
     {
     InitializeComponent();
     }
     private void Form1_Load(object sender, EventArgs e)
     {
    
     fillcboclientes();
     }
     private void fillcboclientes()
     {
     
     using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
     {
     cn.Open();
     SqlDataAdapter da = new SqlDataAdapter("select * from customers", cn);
     
     da.Fill(dt);
     
    
     }
     cboCustomers.DisplayMember = "CompanyName";
     cboCustomers.ValueMember = "CustomerId";
     cboCustomers.DataSource = dt;
    
    
    
     }
    
     

     

    private void cboCustomers_SelectionChangeCommitted(object sender, EventArgs e)

    { txtDireccion.DataBindings.Add("Text", dt, "Address"); txtDireccion.DataBindings.Clear(); txtCiudad.DataBindings.Add("Text", dt, "City"); txtCiudad.DataBindings.Clear(); txtTelefono.DataBindings.Add("Text", dt, "Phone"); txtTelefono.DataBindings.Clear(); } } }

    Como verás ahi bindeo la data de un datatable a textbox.Con un label el bindeo sería algo asi.

    lblCiudad.DataBindings.Add("Text",dt,"City");

    http://www.mundoprogramacion.com/colabora/NET2005/FernandoLuque_DataBinding.htm

    En ese enlace puedes encontrar mas informacíon aunque el código está en visual basic,pasarlo al c# no es dificil.

    La data es de la base de pruebas Northwind.

    Saludos.

     

     

    • Marcado como respuesta philbahia lunes, 28 de febrero de 2011 16:26
    lunes, 28 de febrero de 2011 14:05

Todas las respuestas

  • hola

    es que si asignas un ValueMember solo obtendras ese valor que has definido

    revisa este articulo

    [Winforms] Como usar el SelectedValue

    alli explico como poder hacer esto que mencionas, poder tomar e Datarow que se bindea a cada item

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta philbahia lunes, 28 de febrero de 2011 16:26
    domingo, 27 de febrero de 2011 22:58
  • Hola , como un aporte mas a lo que te sugiere Leandro quizas te pueda ser útil el uso de DataBindings.

    Un ejemplo de código sería este

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.Sql;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Collections;
    
    
    namespace ejemplobinding
    {
     public partial class Form1 : Form
     {
     DataTable dt = new DataTable();
     public Form1()
     {
     InitializeComponent();
     }
     private void Form1_Load(object sender, EventArgs e)
     {
    
     fillcboclientes();
     }
     private void fillcboclientes()
     {
     
     using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
     {
     cn.Open();
     SqlDataAdapter da = new SqlDataAdapter("select * from customers", cn);
     
     da.Fill(dt);
     
    
     }
     cboCustomers.DisplayMember = "CompanyName";
     cboCustomers.ValueMember = "CustomerId";
     cboCustomers.DataSource = dt;
    
    
    
     }
    
     

     

    private void cboCustomers_SelectionChangeCommitted(object sender, EventArgs e)

    { txtDireccion.DataBindings.Add("Text", dt, "Address"); txtDireccion.DataBindings.Clear(); txtCiudad.DataBindings.Add("Text", dt, "City"); txtCiudad.DataBindings.Clear(); txtTelefono.DataBindings.Add("Text", dt, "Phone"); txtTelefono.DataBindings.Clear(); } } }

    Como verás ahi bindeo la data de un datatable a textbox.Con un label el bindeo sería algo asi.

    lblCiudad.DataBindings.Add("Text",dt,"City");

    http://www.mundoprogramacion.com/colabora/NET2005/FernandoLuque_DataBinding.htm

    En ese enlace puedes encontrar mas informacíon aunque el código está en visual basic,pasarlo al c# no es dificil.

    La data es de la base de pruebas Northwind.

    Saludos.

     

     

    • Marcado como respuesta philbahia lunes, 28 de febrero de 2011 16:26
    lunes, 28 de febrero de 2011 14:05
  • Gracias por la ayuda

     

    Probe con esto 

     

                int nro = cmbmodelo.SelectedIndex;

                this.label2.Text = dtbase.Tables[0].Rows[nro]["Cilindro"].ToString();

     

    pero no lo veo muy estable, voy a probar lo q me indicaron

     

    Gracias


    Phil
    lunes, 28 de febrero de 2011 16:28