c# - 遍历数据网格的行

标签 c# sql-server-2008 datagrid datarow

我正在尝试通过遍历数据网格的所有行来从数据网格中提取值

    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/

相关文章:

c# - 从数据库中下载照片 C#

c# - XAttribute 不知道兄弟 XAttribute which IsNamespaceDeclaration

sql - 连接查询之间的语义差异

c# - 绑定(bind)属性值更改时更改 DataGrid 单元格的文本颜色

c# - 如何将文件夹中的所有 PNG 转换为 JPG 以制作视频?

c# - listView ItemSelectionChanged 'Is Selected' 没有按预期工作?

sql-server - 从字符串转换日期和/或时间时 SQL Server 错误转换失败

sql - 选择查询在其类别(组)下至少有一个非空值时选择行

c# - 如何每 1 分钟自动刷新一次 WPF 上的 Datagrid?

c# - 如何在右键单击时获取数据网格列索引? MVVM WPF