[C# DevExpress] DevExpress(데브익스프레스) GridControl에서 ComboBox(콤보박스) 추
- C#/DevExpress
- 2020. 4. 10. 01:00
안녕하세요.
오늘은 C# DevExpress에서 GridControl을 다뤄보려고 합니다.
그 중에서도, 특정 컬럼을 콤보박스로 만드는 방법에 대해서 알아 보려고 합니다.
먼저, 윈폼 프로젝트를 생성해 주시고 아래와 같이 컨트롤을 배치해 주시기 바랍니다.
윈폼 프로젝트 생성 및 컨트롤 배치
위와 같이 GridControl과 SimpleButton 컨트롤 2개를 배치해 주시기 바랍니다.
저는 예제로 Nme, Age, Grade, Score 총 4개의 컬럼을 선언하여 값을 넣으려고 하는데요. 이 중에서 3번째 컬럼인 Grade 컬럼은 콤보박스로 만들어 보도록 하겠습니다.
예제 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
using DevExpress.XtraEditors.Repository; using DevExpress.XtraGrid.Views.Grid; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace DevTest { public partial class Form1 : DevExpress.XtraEditors.XtraForm { //콤보박스 객체 선언 private RepositoryItemComboBox gradeComboBox; public Form1() { InitializeComponent();
//폼 Shown 이벤트 선언 this.Shown += DevForm_Shown;
this.uiBtn_Add.Click += UiBtn_Add_Click; this.uiBtn_Delete.Click += UiBtn_Delete_Click; }
/// <summary> /// 폼이 보여질 때, 일어나는 이벤트 핸들러 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void DevForm_Shown(object sender, EventArgs e) { //GridControl 초기화 InitGridControl();
//DataTable 데이터 저장 및 바인딩 this.uiGrid_Main.DataSource = GetData();
//콤보박스 선언 this.gradeComboBox = new RepositoryItemComboBox(); this.gridView1.Columns[2].ColumnEdit = this.gradeComboBox; InitializeComboBoxEdit(); }
/// <summary> /// GridView 초기화 /// </summary> public void InitGridControl() { GridView gv = this.uiGrid_Main.MainView as GridView; gv.OptionsView.ShowGroupPanel = false; gv.OptionsBehavior.Editable = true; }
public DataTable GetData() { DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("Age"); dt.Columns.Add("Grade"); dt.Columns.Add("Score");
dt.Rows.Add(new string[] { "범범조조", "28", "2", "100" }); dt.Rows.Add(new string[] { "황선홍", "56", "3", "10" }); dt.Rows.Add(new string[] { "안정환", "34", "2", "78" }); dt.Rows.Add(new string[] { "설기현", "33", "1", "54" }); dt.Rows.Add(new string[] { "아이유", "28", "1", "45" }); dt.Rows.Add(new string[] { "박지성", "23", "4", "10" });
return dt; }
/// <summary> /// 행 추가 버튼 클릭 이벤트 핸들러 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void UiBtn_Add_Click(object sender, EventArgs e) { gridView1.AddNewRow(); }
/// <summary> /// 행 삭제 버튼 클릭 이벤트 핸들러 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void UiBtn_Delete_Click(object sender, EventArgs e) { gridView1.DeleteRow(gridView1.FocusedRowHandle); }
private void InitializeComboBoxEdit() { DevExpressHelper.ClearComboBoxEditData(this.gradeComboBox); DevExpressHelper.SetComboBoxEditData(this.gradeComboBox, "1", "2", "3", "4"); this.gridView1.SetRowCellValue(this.gridView1.FocusedRowHandle, "Grade", gradeComboBox.Items[0]); this.gradeComboBox.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor; }
}
public class DevExpressHelper { public static void ClearComboBoxEditData(RepositoryItemComboBox sourceControl) { sourceControl.Items.Clear(); }
public static void SetComboBoxEditData(RepositoryItemComboBox sourceControl, params string[] itemValueArray) { foreach (string itemValue in itemValueArray) { sourceControl.Items.Add(itemValue); } } } }
|
실행 결과
위와 같이 3번째 컬럼인 “Grade” 컬럼만 콤보박스로 만들어 진 것을 확인하실 수 있습니다.
위에 예제 코드를 조금만 변경하면, Name, Age, Score 컬럼 모두 콤보박스로 변경 가능하니 그건 한번 직접 연습해 보시는 것을 추천드립니다.
감사합니다.^^
'C# > DevExpress' 카테고리의 다른 글
이 글을 공유하기