Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции
Есть словарь, в котором ключ - номер чека, значение - список из покупок. При попытке добавить значение словаря в DataGridView возникает исключение "Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции". В чем может быть проблема? В обычный Label все выводится без проблем.
label3.Text = null;
foreach(KeyValuePair<int, List<string>> KeyValue in tidDB.tidDict)
{
label3.Text += KeyValue.Key.ToString();
foreach(string str in KeyValue.Value)
{
label3.Text += str + ",";
}
label3.Text += Environment.NewLine;
}
dataGridView3.DataSource = null;
dataGridView3.AutoGenerateColumns = false;
dataGridView3.ColumnCount = 2;
dataGridView3.Columns[0].Name = "Номер чека";
dataGridView3.Columns[1].Name = "Список покупок";
//dataGridView3.DataSource = tidDB.tidDict.ToArray();
int i = 0;
foreach(KeyValuePair<int, List<string>> KeyValue in tidDB.tidDict)
{
dataGridView3.Rows[i].Cells["Номер чека"].Value = KeyValue.Key;
foreach(string str in KeyValue.Value)
{
dataGridView3.Rows[i].Cells["Список покупок"].Value = KeyValue.Value.ToString() + ",";
}
i++;
//dataGridView3.Rows.Add(KeyValue.Key);
//dataGridView3.Rows.Add(KeyValue.Value);
}
Ответы (1 шт):
Автор решения: Lika Barken
→ Ссылка
Решила проблему, добавив строку, которая добавляет пустую строку, чтобы к существующей строке можно было обращаться по индексу. Не знаю, конечно, насколько правильно это решение, но, по крайней мере, заработало.
int i = 0;
foreach(KeyValuePair<int, List<string>> KeyValue in tidDB.tidDict)
{
dataGridView3.Rows.Add(); // добавить строку, чтобы можно было обращаться к уже существующей строке по индексу
dataGridView3.Rows[i].Cells["Номер чека"].Value = KeyValue.Key;
foreach(string str in KeyValue.Value)
{
dataGridView3.Rows[i].Cells["Список покупок"].Value += str + " ";
}
i++;
}
