迭代数据网格的行

时间:2013-05-31 18:24:22

标签: c# sql-server-2008 datagrid datarow

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

    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。 有人能告诉我应该做出哪些改变才能起作用? datagrid有一个绑定,它由ms sql 2008数据库

中的存储过程填充

2 个答案:

答案 0 :(得分:10)

使用DataGridRow而不是DataRow他们是不同的对象

foreach (DataGridRow drv in PGIPortfolio.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) 
            {
               .....
            }

        }
    }

答案 1 :(得分:-1)

foreach(DataGridViewRow r in dataGridView1.Rows)