lunes, 15 de agosto de 2016

Un combobox dependa de otro combobox en C# y SQL Server


Hola amigos hoy vamos hacer que dependiendo de la selección de un item del ComboBox nos obtenga en el otro ComboBox ciertos resultados.

En este ejemplo tengo una lista de estados por defecto para que el usuario escoja uno. En el otro Combobox se va generar la lista de municipios dependiendo del estado seleccionado.

Aqui unas imagenes de ejemplo



















Bueno vamos con el código primero nuestra  base de datos.
create database ComboBox
use ComboBox

create table Estados
(
   id_estado int primary key identity,
   estado varchar(80) not null
)

create table Municipios
(
  id_municipio int primary key identity,
  id_estado int CONSTRAINT fk_Estados FOREIGN KEY (id_estado) REFERENCES Estados(id_estado),
  municipio varchar(80) not null
)


insert into Estados(estado) values('Coahuila')
insert into Estados(estado) values('Nuevo León')
insert into Estados(estado) values('Durango')

insert into Municipios(id_estado,municipio) values(1,'Torreon')
insert into Municipios(id_estado,municipio) values(1,'Abasolo')
insert into Municipios(id_estado,municipio) values(1,'Monclova')

insert into Municipios(id_estado,municipio) values(2,'Monterrey')
insert into Municipios(id_estado,municipio) values(2,'Apodaca')
insert into Municipios(id_estado,municipio) values(2,'Escobedo')

insert into Municipios(id_estado,municipio) values(3,'Gomez Palacio')
insert into Municipios(id_estado,municipio) values(3,'Lerdo')
insert into Municipios(id_estado,municipio) values(3,'Mapimi')

Aqui el código implementado en C#
namespace ComboBox
{
    public partial class Form1 : Form
    {
        //Nuestra conexión 
        SqlConnection conexion = new SqlConnection("Data Source=MISAEL-PC; Initial Catalog = ComboBox; Integrated Security = True");
        
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Método que obtiene los estados al iniciar el programa 
            ObtenerEstados();
        }

        public void ObtenerEstados()
        {
            DataSet das = new DataSet();
            SqlDataAdapter adp = new SqlDataAdapter("SELECT * FROM Estados", conexion);
            adp.Fill(das, "Estados");
            comboBox1.DataSource = das.Tables[0].DefaultView;
            comboBox1.DisplayMember = "estado";
            comboBox1.ValueMember = "id_estado";

        }
        //Método que obtiene los estados segun el estado seleccionado
        public void ObtenerMunicipios(int estado)
        {
            DataSet das = new DataSet();
            SqlDataAdapter adp = new SqlDataAdapter("SELECT municipio FROM Municipios WHERE id_estado='" + estado + "'", conexion);
            adp.Fill(das, "Municipios");
            comboBox2.DataSource = das.Tables[0].DefaultView;
            comboBox2.DisplayMember = "municipio";
        }
        
        //Utilizamos el evento SelectionChangeCommitted para cuando se ha cambiado el elemento seleccionado y se confirma el    //cambio de estado en el ComboBox
        private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
        {
            ObtenerMunicipios(Convert.ToInt32(comboBox1.SelectedValue));
        }



    }
}

No hay comentarios:

Publicar un comentario