Публикации
Публикации  »  C#, C++

Добавление в dataGridView объектов и работа с ними

В dataGridView можно добавлять различные combobox-ы, checkbox-ы и прочие объекты, чтобы ячейка грида была не обычным текстовым полем, а выпадающим списком или чекбоксом или другим элементом. Делается это примерно так:

BindingSource BS = new BindingSource();
DataTable DT = new DataTable();
DT.Columns.Clear();
DT.Columns.Add("field1_name");
DT.Columns.Add("field2_name");
BS.DataSource = DT;
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = BS;

// Добавляем чекбокс
DataGridViewCheckBoxColumn col1 = new DataGridViewCheckBoxColumn();
col1.DataPropertyName = "field1_name";
dataGridView1.Columns.Add(col1);

// Добавляем выпадающий список
DataGridViewComboBoxColumn col2 = new DataGridViewComboBoxColumn();
col2.Items.AddRange("Значение1", "Значение2");
col2.DataPropertyName = "field2_name";
col2.DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton;
col2.FlatStyle = FlatStyle.Flat;
dataGridView1.Columns.Add(col2);

В этом примере 1-я колонка будет содержать чекбоксы, а вторая выпадающие списки.

Если возникает необходимость поменять значения, например, выпадающего списка в уже добавленной строке, получить доступ к объекту, содержащемуся в ячейке dataGridView можно так:

int rowid = dataGridView1.CurrentRow.Index;
DataGridViewComboBoxCell cmb = dataGridView1.Rows[rowid].Cells[1] as DataGridViewComboBoxCell;
dataGridView1.CurrentRow.Cells[1].Value = "";
cmb.Items.Clear();
cmb.Items.Add("Value1");
cmb.Items.Add("Value2");

В этом примере сначала получаем сам выпадающий список, который содержится в текущей строке во 2-й колонке, затем очищаем его и очищаем значение ячейки (чтобы не происходило ошибки несоответствия данных), после чего заполняем его другими значениями, не теми, что были в нем изначально.

Категория: C#, C++

Комментарии к статье:

Пока комментариев нет, ваш будет первым ;)

Добавить комментарий: