Вы идете по этому пути неправильно - вам никогда не нужно напрямую добавлять элементы в DataGridView, как вы, и это то, что создает поведение, которое вы видите.
Попытка вместо этого установить foundProdкак источник данных вашего DataGridView (и создание его списка уровня класса), а затем добавление в него новых значений.
Что-то вроде:
public partial class Form1 : Form
{
private List<Product> foundProd_;
public Form1()
{
InitializeComponent();
foundProd_ = new BindingList<FoundProd>();
dataGridView1.DataSource = foundProd;
}
// This method is where you update the datasource from the linq query
private void SomeMethod()
{
IQueryable<Product> productQuery = from prod in sampleTaskContext.Product
where prod.ProductId == enteredProdId
select prod;
List<Product> foundProd = productQuery.ToList();
if (foundProd.Count <= 0)
{
ProductsForm prodForm = new ProductsForm();
prodForm.ShowInTaskbar = false;
if (prodForm.ShowDialog() == DialogResult.OK)
{
Product returnedProd = prodForm.fnFormatProductDataForOrder();
foundProd_.Add(returnedProd);
}
}
}
}
Я считаю, что связанный список будет автоматически обновляться - хотявместо этого вы можете использовать BindingList, поскольку это, безусловно, будет.