use*_*339 2 c# datagrid datarow sql-server-2008
我试图通过遍历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);
Run Code Online (Sandbox Code Playgroud)
}
但它在DataRow drv上给我一个InvalidCastException.有人能告诉我应该做出哪些改变才能起作用?datagrid有一个绑定,它由ms sql 2008数据库中的存储过程填充
Ste*_*eve 10
使用DataGridRow而不是DataRow它们是不同的对象
foreach (DataGridRow drv in PGIPortfolio.Items)
Run Code Online (Sandbox Code Playgroud)
但是,目前尚不清楚在这种情况下项目是什么.假设PGIPortfolio是DataGridView,那么你的循环应该写成
foreach (DataGridRow drv in PGIPortfolio.Rows)
Run Code Online (Sandbox Code Playgroud)
编辑
我假设您在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)
{
.....
}
}
}
Run Code Online (Sandbox Code Playgroud)