我正在尝试通过遍历数据网格的所有行来从数据网格中提取值
foreach (DataRow drv in PGIPortfolio.Items)
{
// DataRow row = drv.Row;
string acname = drv["Portfolio"].ToString();
string paramt = drv["Par Amount"].ToString();
MessageBox.Show(acname);
但它在 DataRow drv 处给我一个 InvalidCastException。 有人可以告诉我应该做哪些更改才能使其有效吗? 数据网格有一个绑定(bind),它由来自 ms sql 2008 数据库的存储过程填充
最佳答案
使用 DataGridRow不是 DataRow它们是不同的对象
foreach (DataGridRow drv in PGIPortfolio.Items)
然而,在这个上下文中 Items 是什么并不清楚。假设 PGIPortfolio 是 DataGridView 那么你的循环应该写成
foreach (DataGridRow drv in PGIPortfolio.Rows)
编辑
我假设您使用的是 WinForms 中的 DataGridView 控件,而不是 WPF DataGrid
在这种情况下,正确的方法是使用 ItemsSource 属性。
请尝试此代码....
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)
{
.....
}
}
}
关于c# - 遍历数据网格的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16863531/