Присвоить значение столбцу combobox в datagridview
Привет,
Я не очень хорошо знаком с приложениями winform.
У меня есть представление datagrid, в котором я добавляю столбец combobox.
Я хочу установить значение combobox для каждой строки.
Вот что я делаю:
private void BindGrid(DataTable Table) { dgvSchemaMapped.AutoGenerateColumns = false; dgvSchemaMapped.Columns[0].Name = "COLUMN_NAME"; dgvSchemaMapped.Columns[0].HeaderText = "Column"; dgvSchemaMapped.Columns[0].DataPropertyName = "COLUMN_NAME"; dgvSchemaMapped.Columns[1].Name = "ALIAS_COLUMN"; dgvSchemaMapped.Columns[1].HeaderText = "Alias Column"; dgvSchemaMapped.Columns[1].DataPropertyName = "ALIAS_COLUMN"; dgvSchemaMapped.Columns[2].Name = "TYPE_NAME"; dgvSchemaMapped.Columns[2].HeaderText = "Data Type"; dgvSchemaMapped.Columns[2].DataPropertyName = "TYPE_NAME"; dgvSchemaMapped.DataSource = Table; //Add combobox column to gird DataGridViewComboBoxColumn AliasDataTypeCombo = new DataGridViewComboBoxColumn(); FillDataTypeCombo(AliasDataTypeCombo); dgvSchemaMapped.Columns.Add(AliasDataTypeCombo); // Set default value to aliasDataType combobox SetDefaultDataType(); }
private void SetDefaultDataType() { for (int i = 0; i < dgvSchemaMapped.Rows.Count - 1; i++) { string dataType = dgvSchemaMapped.Rows[i].Cells["TYPE_NAME"].Value.ToString(); switch (dataType.ToLower()) { case "int": case "tinyint": case "smallint": (dgvSchemaMapped.Rows[i].Cells[3]).Value = ((KeyValuePair<string, int>)(((dgvSchemaMapped.Rows[i].Cells[3] as DataGridViewComboBoxCell).Items[3]))).Value; break; case "char": case "nchar": case "varchar": case "nvarchar": (dgvSchemaMapped.Rows[i].Cells[3]).Value = ((KeyValuePair<string, int>)((dgvSchemaMapped.Rows[i].Cells[3] as DataGridViewComboBoxCell).Items[18])).Value; break; case "real": case "decimal": (dgvSchemaMapped.Rows[i].Cells[3]).Value = ((KeyValuePair<string, int>)((dgvSchemaMapped.Rows[i].Cells[3] as DataGridViewComboBoxCell).Items[12])).Value; break; case "datetime": (dgvSchemaMapped.Rows[i].Cells[3]).Value = ((KeyValuePair<string, int>)((dgvSchemaMapped.Rows[i].Cells[3] as DataGridViewComboBoxCell).Items[22])).Value; break; } } }
private void FillDataTypeCombo(DataGridViewComboBoxColumn AliasDataTypeCombo) { Dictionary<string, int> lstDataTypes = new Dictionary<string, int>(); GetBuilInDataTypes(lstDataTypes); AliasDataTypeCombo.DataSource = new BindingSource(lstDataTypes, null); AliasDataTypeCombo.ValueMember = "value"; AliasDataTypeCombo.DisplayMember = "key"; }
Комбо-боксы действительно имеют значения в них, когда сетка привязана. Но я не могу установить значение по умолчанию для каждого combobox.
Что я делаю не так?
Любая помощь будет оценена по достоинству.
Спасибо,
Лок.
Что я уже пробовал:
Я попытался привести ячейку сетки к ячейке combobox и присвоить ей значение.
Но это не дает мне никакого результата.