Я получаю странное поведение с добавлением DataGridViewComboBoxColumn в DataGridView. Вот мой код:Добавление DataGridViewComboBoxColumn - при обновлении индексирования столбцов столбцов
private void CreateSupplyTypeColumn()
{
supplyTypeCombo = new DataGridViewComboBoxColumn();
supplyTypeCombo.HeaderText = "Circuit Type";
supplyTypeCombo.Name = "colCircuitType";
supplyTypeCombo.DataSource = supplyType;
supplyTypeCombo.DisplayMember = "SupplyTypeShort";
supplyTypeCombo.ValueMember = "SupplyTypeID";
dgDeliveryPoints.Columns.Insert(4, supplyTypeCombo);
}
private void btnSearch1_ByIsCurrent(object sender, EventArgs e)
{
dgDeliveryPoints.DataSource = null
dgDeliveryPoints.DataSource = dpResult;
if (!dgDeliveryPoints.Columns.Contains(supplyTypeCombo))
CreateSupplyTypeColumn();
else
supplyTypeCombo.DisplayIndex = 4;
foreach (DataGridViewRow row in dgDeliveryPoints.Rows)
row.Cells[4].Value = row.Cells["SupplyTypeID"].Value;
}
В первый раз я нажимаю кнопку поиска метод btnSearch1_ByIsCurrent запускающее и supplyTypeCombo выглядит хорошо. он правильно расположен в сетке dgDeliveryPoints и имеет правильные значения, но я получаю странное поведение, когда я снова нажимаю кнопку поиска. Когда я снова нажимаю кнопку, индекс столбца supplyTypeCombo изменяется от 4 до 3? Почему это происходит? Кроме того, причина, у меня есть этот код:
if (!dgDeliveryPoints.Columns.Contains(supplyTypeCombo))
CreateSupplyTypeColumn();
else
supplyTypeCombo.DisplayIndex = 4;
потому, что даже если я обнулять источник данных для dgDeliveryPoints с каждой кнопкой мыши, чтобы заново установить все и попытаться добавить столбец supplyTypeCombo назад я получаю исключение о том, что это уже здесь. Почему это происходит??