В 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-й колонке, затем очищаем его и очищаем значение ячейки (чтобы не происходило ошибки несоответствия данных), после чего заполняем его другими значениями, не теми, что были в нем изначально.
Комментарии к статье:
Добавить комментарий: