В соответствии с комментарием jimi, если вы хотите, чтобы набор данных был связан с DGV, он все еще там, в источнике данных DGV:
DataTable dt = dgv.DataSource as DataTable;
Если вы отредактируете значение, хранящееся в объекте данных, этот набор данных запомнит исходное значение. Представьте, что вы загрузили Джона Смита в первый ряд вашей таблицы данных со столбцом с именем «name»:
Console.WriteLine(dt[0]["name"]); //prints John Smith
dt[0]["name"] = "Jane Doe";
Строка теперь имеет две версии:
Console.WriteLine(dt[0]["name", DataRowVersion.Current]); //prints Jane Doe
Console.WriteLine(dt[0]["name", DataRowVersion.Original]); //prints John Smith
Если вы приняли AcceptChanges на дата (или все данные), оригинал перезаписывается текущим:
dt.AcceptChanges();
Console.WriteLine(dt[0]["name", DataRowVersion.Current]); //prints Jane Doe
Console.WriteLine(dt[0]["name", DataRowVersion.Original]); //prints Jane Doe
пс; вы можете покончить с набором данных в вашем вспомогательном методе
public DataTable GetData(string selectQuery)
{
NpgsqlConnection conn = new NpgsqlConnection(connString);
DataTable dt = new DataTable();
try
{
conn.Open();
NpgsqlDataAdapter da = new NpgsqlDataAdapter(selectQuery, conn);
conn.Close();
da.Fill(dt);
return dt;
}
}