Gridview의 특정 컬럼에 콤보 박스가 있다 가정할 때

 

이 콤보 박스는 선택을 할수 있어야 하지 값 입력이 되면 안됩니다.

 

값 입력을 막는 코드 입니다.

this.genderComboBox.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;

Gridview의 특정 컬럼에 콤보 박스를 추가 할 수 있습니다.

 

전역변수 작성란에 아래의 코드를 작성 후

private RepositoryItemComboBox genderComboBox;

 

폼 생성자 작성란에 아래의 코드를 추가해줍니다.

this.genderComboBox = new RepositoryItemComboBox();

this.gridView.Columns[5].ColumnEdit = this.genderComboBox;

InitializeComboBoxEdit();

 

InitializeComboBoxEdit 메서드 입니다.

#region InitializeComboBoxEdit()

/// <summary>
/// 콤보 박스 에디트를 설정합니다.
/// </summary>
private void InitializeComboBoxEdit()
{
	DevExpressHelper.ClearComboBoxEditData(this.genderComboBox);

	DevExpressHelper.SetComboBoxEditData(this.genderComboBox, "", "M", "F");

	this.gridView.SetRowCellValue(this.gridView.FocusedRowHandle, "Gender", genderComboBox.Items[0]);

	this.genderComboBox.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;

}

#endregion

 

DevExpressHelper.cs 입니다.

/// <summary>
/// 데브익스프레스 헬퍼 클래스 입니다.
/// </summary>
public class DevExpressHelper
{
	#region ClearComboBoxEditData(sourceControl)

	/// <summary>
	/// 콤보 박스 에디트의 데이터를 제거합니다.
	/// </summary>
	/// <param name="sourceControl">소스 컨트롤 입니다.</param>
	public static void ClearComboBoxEditData(RepositoryItemComboBox sourceControl)
	{
		sourceControl.Items.Clear();
	}

	#endregion

	#region SetComboBoxEditData(sourceControl, itemValueArray)

	/// <summary>
	/// 콤보 박스 에디트의 데이터를 설정합니다.
	/// </summary>
	/// <param name="sourceControl">소스 컨트롤 입니다.</param>
	/// <param name="itemValueArray">아이템 값의 배열 입니다.</param>
	public static void SetComboBoxEditData(RepositoryItemComboBox sourceControl, params string[] itemValueArray)
	{
		foreach (string itemValue in itemValueArray)
		{
			sourceControl.Items.Add(itemValue);
		}
	}

	#endregion
}

이전 포스팅에서는 각각의 행에 내용을 직접 코드로 작성을 했는데


이번에는 텍스트박스와 콤보 박스 그리고 DateTimePicker를 이용해서 데이터를 넣는 방법의 예제를 만들어봤습니다.


우선 아래와 같이 간단하게 폼을 만듭니다.


각 컨트롤들의 값은 변경 없이 생성될 때의 이름 그대로 사용하였습니다.





그리고 아래와 같이 코드를 작성합니다.


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
using System.Data;
using System.Windows.Forms;
 
namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        // 데이터를 삽입할 데이터 테이블을 생성합니다.
        DataTable table = new DataTable();
 
        public Form1()
        {
            InitializeComponent();
 
            // Table에 column을 추가합니다.
            table.Columns.Add("ID"typeof(string));
            table.Columns.Add("제목"typeof(string));
            table.Columns.Add("구분"typeof(string));
            table.Columns.Add("생성일"typeof(string));
            table.Columns.Add("수정일"typeof(string));
 
            // Column들이 추가된 Table을 DataGridView에 추가합니다.
            dataGridView1.DataSource = table;
 
            // 클릭 이벤트 입니다.
            button1.Click += Button1_Click;
        }
 
        /// <summary>
        /// 추가 버튼을 누르면 동작합니다.
        /// </summary>
        private void Button1_Click(object sender, System.EventArgs e)
        {
            // 입력된 값들을 Table에 추가합니다.
            table.Rows.Add(textBox1.Text, textBox2.Text, 
                           comboBox1.SelectedItem, dateTimePicker1.Value, dateTimePicker2.Value);
            
            // 값들이 추가된 Table을 DataGridView에 추가합니다.
            dataGridView1.DataSource = table;
 
        }
    }
}
 
cs



작성을 다한 뒤 빌드를 하게 되면 아래와 같이 사용이 가능합니다.


각각의 컨트롤에 값을 입력 후 추가 버튼을 누르게 되면 DataGridView에 값이 추가 됩니다.





+ Recent posts