팡이네

ComboBox SelectedItem

C#2011. 10. 27. 11:08
DataTable로 바인딩 하여 콤보박스를 표시했을 경우
선택한 Row 전체를 가져오고자 할 때
	var columnValue = ComboBox.SelectedRow["ColumnName"].ToString();
또는
	var selectedRow = ComboBox.SelectedItem as DataRowView;
	var columnValue = selectedRow["ColumnName"].ToString();

ValueMember나 DisplayMember로 지정하지 않은 컬럼의 값으로
콤보박스를 선택하고자 할 때
public static DataRowView GetComboSelectedItem(ComboBox cbo
	, string columnName, string valueForSelect)
{
	foreach (DataRowView row in cbo.Items)
	{
		if (row[columnName].ToString() == valueForSelect)
		{
			return row;
		}
	}

	return null;
}

DataTable dt = ...;

cboCombo.DisplayMember = "Text";
cboCombo.ValueMember = "Code";
cboCombo.DataSource = dt;

cboCombo.SelectedItem
	= GetComboSelectedItem(cboCombo, "OtherColumnName", "04");


콤보박스 Dictionary 로 바인딩
var list = new Dictionary<string, int>();
list.Add("1", 100);
list.Add("2", 200)
list.Add("3", 300);

combobox.DisplayMember="Key";
combobox.ValueMember="Value";
combobox.DataSource = new BindingSource(list, null);