Когда вы устанавливаете свойство DataSource
на null
, вы по существу удаляете все данные из DataGridView
(так как это не ' больше не знаю, с чем связываться).
У вас есть два варианта здесь. Первый - обновить базовый источник данных. Давайте предположим, что это DataTable
. В этом случае вы бы сделали что-то вроде:
DataTable dt = dataGridView1.Source as DataTable;
dt.Rows.Add(new object[] { ... });
И тогда DataGridView
примет изменения (обратите внимание, что если вы не привязываетесь к чему-то, что не реализует INotifyCollectionChanged
интерфейс , вам придется вызвать ResetBindings
метод для обновления сетки).
Другой вариант - позволить DataGridView
управлять строками. Это можно сделать, добавив каждый элемент вручную, используя метод Add
в DataGridViewRowCollection
, возвращаемый свойством Rows
:
foreach (var item in source)
{
dataGridView1.Rows.Add("1", "2", "3", ...);
}
Я бы не сказал, что второе решение является оптимальным , но оно будет работать.
Наконец, при условии, что вы привязываетесь к DataTable
(или к какой-либо другой материализации данных из базового источника данных), это никак не влияет на обновление базового источника данных (это будет отдельный вопрос).