-
내가 쓰려고 만든 C# 윈폼 템플릿(콤보박스 데이터 바인딩)C# 2020. 9. 15. 13:42
콤보박스 리스트형태로 쓰기
List<ComboBox> list_cbobox; list_cbobox = new List<ComboBox>() { B_cboCOMP_NM, B_cboCUSTOMER_CODE, B_cboPLANT_NM, B_cboUNIT , B_cboBUY_MANAGER,B_cboSTOCK_MANAGER}; List<TextBox> list_txtbox; list_txtbox = new List<TextBox>() { B_txtBUY_QTY, B_txtLTIME, B_txtORDER_QTY_MIN, B_txtPART_NM, B_txtPART_NO, B_txtPRICE, B_txtRMK, B_txtSAFTSR };
리스트 형태로 enable disable 메서드
private void DisableControl() { foreach (var item in list_txtbox) { item.Enabled = false; } foreach (var item in list_cbobox) { item.Enabled = false; } B_dateORDER_DATE.Enabled = false; } private void EnableControl() { foreach (var item in list_txtbox) { item.Enabled = true; } foreach (var item in list_cbobox) { item.Enabled = true; } B_dateORDER_DATE.Enabled = true; }
1. 딕셔너리 형태로 콤보박스에 바인딩
using (SqlConnection conn = new SqlConnection(Commons.CONNSTRING)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = " SELECT COMP_CD,COMP_NM FROM CIS_COMP "; SqlDataReader reader = cmd.ExecuteReader(); Dictionary<string, string> temps = new Dictionary<string, string>(); temps.Add("전체", "전체"); //첫 항목에 전체 혹은 선택 while (reader.Read()) { temps.Add(reader[0].ToString(), reader[1].ToString()); } A_cboCOMP_NM.DataSource = new BindingSource(temps, null); A_cboCOMP_NM.ValueMember = "Key"; A_cboCOMP_NM.DisplayMember = "Value"; A_cboCOMP_NM.SelectedIndex = 0; }
2. 콤보박스에 하나씩 Item 추가
forech(var item in Cbo) { combobox.Items.Add(넣고싶은거) }
3. 콤보박스 바인딩 해제
B_cboPLANT_NM.DataSource = null; B_cboPLANT_NM.Refresh();
4. 이전 항목의 콤보박스의 조건을 따라가는 콤보박스
콤보박스 클릭 시 기존 데이터 소스 해제 새로운 데이터 소스 바인딩 WHERE조건절에 근거
private void B_cboPLANT_NM_MouseClick(object sender, MouseEventArgs e) { if (B_cboCOMP_NM.SelectedIndex == 0) { B_cboPLANT_NM.DataSource = null; B_cboPLANT_NM.Refresh(); if (B_cboPLANT_NM.Items.Count < 1) B_cboPLANT_NM.Items.Add("선택"); B_cboPLANT_NM.SelectedIndex = 0; } //공장명 else if (B_cboCOMP_NM.SelectedIndex != 0) { using (SqlConnection conn = new SqlConnection(Commons.CONNSTRING)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = " SELECT PLANT_CD,PLANT_NM FROM CIS_PLANT WHERE COMP_CD = @COMP_CD"; SqlParameter paramCity = new SqlParameter("@COMP_CD", SqlDbType.VarChar, 20); paramCity.Value = B_cboCOMP_NM.SelectedValue.ToString(); cmd.Parameters.Add(paramCity); SqlDataReader reader = cmd.ExecuteReader(); Dictionary<string, string> temps = new Dictionary<string, string>(); temps.Add("선택", "선택"); while (reader.Read()) { temps.Add(reader[0].ToString(), reader[1].ToString()); } B_cboPLANT_NM.DataSource = new BindingSource(temps, null); B_cboPLANT_NM.ValueMember = "Key"; B_cboPLANT_NM.DisplayMember = "Value"; B_cboPLANT_NM.SelectedIndex = 0; } } }
공장 이름과 공장코드를 예로 들때
눈에 보이는 DisplayMember는 공장이름, ValueMember는 공장코드로 바인딩 되었기 때문에
Combobox1.SelectedValue.ToString()
으로 매개변수를 주면된다. 위와 같이 되면 선택한 공장코드가 출력된다.
'C#' 카테고리의 다른 글
내가 쓰려고 만든 C# 윈폼 템플릿(기본키 확인 메서드) (0) 2020.09.15 내가 쓰려고 만든 C# 윈폼 템플릿(데이터 그리드뷰 셀 클릭,데이터 그리드 뷰 내부의 삭제 체크박스) (0) 2020.09.15 내가 쓰려고 만든 C# 윈폼 템플릿 (SELECT) (0) 2020.09.15 C# IComparable을 이용한 List정렬 (0) 2020.08.21 C# 숫자야구 윈폼 (0) 2020.08.20