2

データグリッドのすべての行を反復処理することにより、データグリッドから値を抽出しようとしています

    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 が発生しています。動作させるためにどのような変更を加える必要があるかを誰かに教えてもらえますか? データグリッドにはバインディングがあり、ms sql 2008 データベースのストアド プロシージャによって設定されています。

4

2 に答える 2

10

別のオブジェクトであるDataRowではなくDataGridRowを使用します

foreach (DataGridRow drv in PGIPortfolio.Items)

ただし、このコンテキストでアイテムが何であるかは明確ではありません。PGIPortfolio が DataGridView であると仮定すると、ループは次のように記述されます。

foreach (DataGridRow drv in PGIPortfolio.Rows)

編集 WPF DataGrid ではなく、WinForms で DataGridView コントロールを使用していると仮定しました。この場合、正しいアプローチは 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) 
            {
               .....
            }

        }
    }
于 2013-05-31T18:26:45.477 に答える
-1

foreach(DataGridViewRow r in dataGridView1.Rows)

于 2014-09-16T13:59:12.933 に答える