2014-11-27 2 views
0

Я получаю странное поведение с добавлением 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 назад я получаю исключение о том, что это уже здесь. Почему это происходит??

ответ

0

Вы пытались изменить эту строку кода:

row.Cells[4].Value = row.Cells["SupplyTypeID"].Value; 

к этому:

supplyTypeCombo.DataPropertyName = "SupplyTypeID"; 
Смежные вопросы