Använd en DataGridRow inte en DataRow de är olika objekt
foreach (DataGridRow drv in PGIPortfolio.Items)
Det är dock inte klart vad Items är i detta sammanhang. Om du antar att PGIPortfolio är DataGridView så ska din loop skrivas som
foreach (DataGridRow drv in PGIPortfolio.Rows)
REDIGERA Jag antog att du använde DataGridView-kontrollen i WinForms, inte WPF DataGrid. I det här fallet är det korrekta tillvägagångssättet att använda egenskapen ItemsSource.
Prova den här koden...
var itemsSource = PGIPortfolio.ItemsSource as IEnumerable;
if (itemsSource != null)
{
foreach (var item in itemsSource)
{
var row = PGIPortfolio.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
if (row != null)
{
.....
}
}
}