DataGridViewComboBoxColumn установить выбранный индекс - PullRequest
6 голосов
/ 20 марта 2011

привет, я во время выполнения связываю данные в комбинированный список данных.Но как мне сделать так, чтобы автоматически отображался первый элемент?я не могу найти выбранный индекс из DataGridViewComboBoxColumn.

  DataGridViewComboBoxColumn cbStudentCourse = (DataGridViewComboBoxColumn)dgStudentCourse.Columns["studentCourseStatus"];
                    cbStudentCourse.DataSource = Enum.GetValues(typeof(CourseStudentStatus));
                    cbStudentCourse.DisplayIndex = 1;

- обновление ---
я видел, как кто-то делал это в решении 3
LInk
Вы уверены, что мне нужен такой длинный код, чтобы выбрать первый элемент ??????

Ответы [ 2 ]

8 голосов
/ 20 марта 2011

A DataGridViewComboBoxColumn не имеет свойств SelectedIndex и SelectedValue. Однако вы можете получить то же поведение SelectedValue, установив свойство Value.

Например, для первого индекса значение элемента имеет значение 2, тогда вы должны установить .Value = "2" для установки первого выбранного индекса.

Например

myDataGridViewComboBoxColumn.Value = "20";

В вашем случае

myDataGridViewComboBoxColumn.Value = CourseStudentStatus.EnumToBeSelected.ToString();

Подробнее о DataGridViewComboBoxColumn

5 голосов
/ 14 января 2012

лучший способ установить значение datagridViewComboBoxCell:

DataTable dt = new DataTable();
dt.Columns.Add("Item");
dt.Columns.Add("Value");
dt.Rows.Add("Item1", "0");
dt.Rows.Add("Item1", "1");
dt.Rows.Add("Item1", "2");
dt.Rows.Add("Item1", "3");
DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
cmb.DefaultCellStyle.Font = new Font("Tahoma", 8, FontStyle.Bold);
cmb.DefaultCellStyle.ForeColor = Color.BlueViolet;
cmb.FlatStyle = FlatStyle.Flat;
cmb.Name = "ComboColumnSample";
cmb.HeaderText = "ComboColumnSample";
cmb.DisplayMember = "Item";
cmb.ValueMember = "Value";
DatagridView dvg=new DataGridView();
dvg.Columns.Add(cmb);
cmb.DataSource = dt;
for (int i = 0; i < dvg.Rows.Count; i++)
{
dvg.Rows[i].Cells["ComboColumnSample"].Value = (cmb.Items[0] as 
DataRowView).Row[1].ToString();
}

Это сработало у меня очень хорошо

...