Похоже, ваш подход к работе с dataGridView немного неправильный. Вы пытаетесь работать со строками сетки данных напрямую, но идея состоит в том, чтобы иметь отдельную коллекцию, подобную List<Product>
, и отображать ее через источник привязки.
1. Сначала создайте класс, представляющий ваш продукт, например:
public class Product
{
public string Title { get; set; }
public string Asin { get; set; }
}
2. Создайте список продуктов и добавьте их в этот список.
3. Нажмите на dataGridView в конструкторе форм и обратите внимание на кнопку со стрелкой в правом верхнем углу. Нажмите на него и сгенерируйте новый источник данных, выбрав класс Product
. DataGridBindingSource появится в нижней части дизайнера форм. Давайте предположим, что его зовут dataGridViewBindingSource
.
4. Присвойте свою коллекцию продуктов источнику привязки:
dataGridViewBindingSource.DataSource = products;
Теперь вы можете изменить коллекцию продуктов и отобразить обновленные продукты в сетке, вызвав метод dataGridView.Refresh()
. На этом этапе вам следует избавиться от исключения «Индекс вне диапазона», и у вас есть ссылка на коллекцию ваших продуктов, поэтому вам не нужно явно «извлекать» их из строк сетки данных.
5. Вместо получения значений из ComboBox вы можете сначала сохранить параметры в продукте, а затем добавить их в комбинированный список.