Chắc là bạn insert nhầm giữa selectedValue và Text
Mình có
+ tableNganh(MaNganh, TenNganh)
+ tableLop(MaLop, TenLop, SiSo, GVCN, MaNganh)//MaNganh là khóa ngoại
- Khi mình thêm (insert) như giao diện ở hình trên cho lớp, nếu combobox mã ngành ở trên mình cho DisplayMember = TenNganh thì kết quả insert sẽ không đúng!!!( các bạn chú ý mã ngành ở trên và mã ngành ở datagridview sau khi insert nó không đúng, VD: nhu khi mình chọn mã ngành là Đại học công nghệ thông tin => nhưng khi insert vào thì nó không ra đúng như vậy nó có thể ra các mã ngành khác)
- Nhưng khi mình sửa DisplayMember = MaNganh thì đúng!!
////Code load tableNganh len combobox
Mong các bạn giúp mình, mình muốn combobox ở trên cho hiển thị tên ngành mà gặp lỗi!!Code://load len cboMaNganh cboMaNganh.DataSource = nganhBus.layDSNganh(); cboMaNganh.DisplayMember = "TenNganh"; cboMaNganh.ValueMember = "MaNganh";
Chắc là bạn insert nhầm giữa selectedValue và Text
Bạn có thể nó rõ hơn không?
câu truy vấn của mình
Code:string sql = string.Format("INSERT INTO Lop(MaLop, TenLop, SiSo, GVCN, MaNganh, MaKhoaHoc)" + "VALUES('{0}',N'{1}','{2}',N'{3}','{4}','{5}')",lop.MaLop, lop.TenLop, lop.SiSo, lop.GVCN, lop.MaNganh,lop.MaKhoaHoc);
Bạn dùng cách này thử xem dùng
/// <summary>
/// Hàm load dữ liệu vào combobox
/// </summary>
/// <param name="cbx">Tên combobox</param>
/// <param name="dtValue">Datatable chưa dữ liệu cần fill</param>
/// <param name="strDisplayMember">Trường Text hiển thị</param>
/// <param name="strValueMember">Trường lấy giá trị</param>
public static void loadCombo(ComboBox cbx, DataTable dtValue, string strDisplayMember, string strValueMember)
{
DataRow row = dtValue.NewRow();
row[strValueMember] = 0;
row[strDisplayMember] = "[--Tất cả--]";
dtValue.Rows.Add(row);
dtValue.DefaultView.Sort = strValueMember;
cbx.DataSource = dtValue;
cbx.DisplayMember = strDisplayMember;
cbx.ValueMember = strValueMember;
}
//cách để bạn lấy ra ID để Insert
INguoiXuat = int.Parse(cboNguoiNhap.SelectedValue.ToString());
rồi triệu gọi lên bẹn lên moduld hoá các hàm dùng chung
Chúc vui.
Hic mình cũng giống như bạn chủ thớt , có ai biết cách giải quyết không
Không phải bạn ơi.
Mình làm form quản lý phòng, có 2 bảng
- Phong(MaPhong,TenPhong,MaLoaiPhong,TinhTrangPhong,GhiChu)
- LoaiPhong (MaLoaiPhong,TenLoaiPhong,DonGia) Khóa ngoại là MaLoaiPhong
Mình muốn làm click chọn giá trị combobox LoaiPhong thì nó sẽ hiện ra ĐonGia theo mỗi LoaiPhong (Ví dụ : Loại 1 DonGia 300000,Loai 2 DonGia 400000)
thì mình sử dụng select index change trong combobox là dc (mình làm dc cái này rồi),
private void cbLoaiPhong_SelectedIndexChanged(object sender, EventArgs e)
{
this.txtDonGia.Text = cbLoaiPhong.SelectedValue.ToString();
}
nhưng vấn đề ở chỗ insert
cbLoaiPhong.DisplayMember = "MaLoaiPhong";
cbLoaiPhong.ValueMember = "DonGia";
h insert thì nó báo lỗi
string sql = "insert into Phong(TenPhong,MaLoaiPhong,TinhTrangPhong,GhiChu) values('" + txtTenPhong.Text+"','"+cbLoaiPhong.SelectedValue.T oString()+"','"+""+"','"+txtGhiChu.Text +"')";
nếu sửa lại
cbLoaiPhong.DisplayMember = "MaLoaiPhong";
cbLoaiPhong.ValueMember = "MaLoaiPhong";
thì insert được không load DonGia lên được, có cách nào toàn diện 2 cái không, bạn chỉ mình với
cbLoaiPhong.DisplayMember = "MaLoaiPhong";
cbLoaiPhong.ValueMember = "DonGia";//Cái này trả về đơn giá
h insert thì nó báo lỗi
string sql = "insert into Phong(TenPhong,MaLoaiPhong,TinhTrangPhong,GhiChu) values('" + txtTenPhong.Text+"','"+cbLoaiPhong.SelectedValue.T oString()+"','"+""+"','"+txtGhiChu.Text +"')"; sao lại lấy đơn giá cho vô mã loại phòng, thế thì làm sao mà liên kết 2 bảng được
còn muốn hiển thị đơn giá thì bạn phải có cái bảng ntn:
"Select p.*, lp.DonGia from Phong p left join LoaiPhong lp on lp.MaLoaiPhong = p.MaLoaiPhong"
rồi gán source cho combobox, mỗi lần index_changed thì hiển thị lên txtDonGia
còn bạn thích lấy cái gì từ datasouce thì thông qua thằng SelectedItem (nó là 1 phần tử của datasouce nhé)