[help] liên kết 2 combobox

Mình có form thế này, mình liên kết 2 combobox.
Mình đã tạo 2 textbox để test thử thì nó chỉ truyền thì nó chỉ truyền đi Tên khóa học, còn Lop thì ko truyền đi gì cả.
Mình muốn truyền đi Lop_ID và *******_ID
Pro xem giúp mình với

private void frm_DiemTrungBinhToanKhoa_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = KetNoi.str;
con.Open();
SqlCommand cmd = new SqlCommand();
SqlCommand cmd1 = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM *******";
SqlDataReader rd;
rd = cmd.ExecuteReader();
DataTable td = new DataTable();
td.Load(rd);
for (int i = 0; i < td.Rows.Count; i++)
{
this.cbo*******.Items.Add(td.Rows*[1]);
}
con.Close();
}
private void cbo*******_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = KetNoi.str;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
string Ten*******;
Ten******* = cbo*******.SelectedItem.ToString();
cmd.CommandText = "select* from ******* where Ten*******='" + Ten******* + "'";
SqlDataReader rd;
rd = cmd.ExecuteReader();
DataTable td = new DataTable();
td.Load(rd);
string Ma******* = td.Rows[0][0].ToString();
cmd.CommandText = "SELECT * FROM Lop WHERE ID_*******='" + Ma******* + "'";
SqlDataReader rd1;
rd1 = cmd.ExecuteReader();
DataTable td1 = new DataTable();
td1.Load(rd1);
cboLop.DataSource = td1;
cboLop.DisplayMember = "TenLop";
cboLop.ValueMember = "Lop_ID";
con.Close();
}
private void btnBaoCao_Click(object sender, EventArgs e)
{
frm_report_DiemTrungBinhToanKhoa frm = new  frm_report_DiemTrungBinhToanKhoa(cboLop.SelectedItem.ToString(),cbo*******.SelectedItem.ToString());
frm.Show();
}

[QUOTE=adam;191125]Mình có form thế này, mình liên kết 2 combobox.
Mình đã tạo 2 textbox để test thử thì nó chỉ truyền thì nó chỉ truyền đi Tên khóa học, còn Lop thì ko truyền đi gì cả.
Mình muốn truyền đi Lop_ID và *******_ID
Pro xem giúp mình với

private void frm_DiemTrungBinhToanKhoa_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = KetNoi.str;
con.Open();
SqlCommand cmd = new SqlCommand();
SqlCommand cmd1 = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM *******";
SqlDataReader rd;
rd = cmd.ExecuteReader();
DataTable td = new DataTable();
td.Load(rd);
for (int i = 0; i < td.Rows.Count; i++)
{
this.cbo*******.Items.Add(td.Rows*[1]);
}
con.Close();
}
private void cbo*******_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = KetNoi.str;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
string Ten*******;
Ten******* = cbo*******.SelectedItem.ToString();
cmd.CommandText = "select* from ******* where Ten*******='" + Ten******* + "'";
SqlDataReader rd;
rd = cmd.ExecuteReader();
DataTable td = new DataTable();
td.Load(rd);
string Ma******* = td.Rows[0][0].ToString();
cmd.CommandText = "SELECT * FROM Lop WHERE ID_*******='" + Ma******* + "'";
SqlDataReader rd1;
rd1 = cmd.ExecuteReader();
DataTable td1 = new DataTable();
td1.Load(rd1);
cboLop.DataSource = td1;
cboLop.DisplayMember = "TenLop";
cboLop.ValueMember = "Lop_ID";
con.Close();
}
private void btnBaoCao_Click(object sender, EventArgs e)
{
frm_report_DiemTrungBinhToanKhoa frm = new  frm_report_DiemTrungBinhToanKhoa(cboLop.SelectedItem.ToString(),cbo*******.SelectedItem.ToString());
frm.Show();
}

[/QUOTE]
Mình không hiểu ý bạn nói lắm nhưng theo mình thì như thế này
Bạn nên viết lớp liên kết database theo quy tắc mô hình 3 tầng , bạn viết các phương thức liên kết , (Thao tác thực thi dữ liệu) Execute_Non_Query , (Truy xuất dữ liệu) Execute_Reader trong 1 class riêng . Khi form nào cần liên kết database thì using nó lên . Như vậy mình đỡ phải viết dài dòng và kém hiệu quả :sure:

SqlDataReader rd;
rd = cmd.ExecuteReader();
DataTable td = new DataTable();
td.Load(rd);
for (int i = 0; i < td.Rows.Count; i++)
{
this.cbo*******.Items.Add(td.Rows*[1]);
}
Cách load dữ liệu từ datatable thông qua sqldatareader thì mình chưa thử nên cũng k biết , nhưng cách của mình là load dữ liệu hẳn từ sqldatareader luôn .
Có 1 phương thức kiểm tra là hasRows = true nếu có record trong đó , nếu có dữ liệu thì load lên bằng
while(rd.Read()) // nếu còn dữ liệu sẽ tiếp tục thực thi
{
this.cbo*******.Items.Add(rd[0].ToString());
}
À quên , bạn cũng nên chú ý đến nếu database của bạn có tiếng việt nhé , thêm chứ N vào trước . ( WHERE Tên=N’ ') thì nó mới ra kết quả đúng
Nếu được , bạn đưa project cho mình để mình xem sao :byebye:

[QUOTE=11520235;191145]
À quên , bạn cũng nên chú ý đến nếu database của bạn có tiếng việt nhé , thêm chứ N vào trước . ( WHERE Tên=N’ ') thì nó mới ra kết quả đúng
[/QUOTE]
Câu này chuẩn cực kỳ, thanks bạn nhiều lắm
Bài mình đã sửa được rồi bạn ạ, mình không làm được theo mô hình 3 tầng nên mới phải làm như thế
bạn có project về quản lý như: Sinh viên, điểm… thì cho mình xin để mình tham khảo nhé , mail mình : truonggiang_tong@yahoo.com
Một lần nữa cảm ơn bạn