WPF Datagrid读取单元格值

WPF Datagrid读取单元格值,wpf,datagrid,Wpf,Datagrid,我试图找出如何读取WPF datagrid单元格的值 类似于 String myString = myDataGrid.Cells[1][2].ToString(); datagrid是在XAML中创建的,我使用 reportGrid.Items.Add(new cbResultRow() { ... }); 现在我想返回并读取datagrid中的单元格值 我见过一些从选定行或单元格读取数据的示例,因为我没有任何选择,用户不会与datagrid交互 我也见过类似这样的代码 foreach(D

我试图找出如何读取WPF datagrid单元格的值

类似于

String myString = myDataGrid.Cells[1][2].ToString();
datagrid是在XAML中创建的,我使用

reportGrid.Items.Add(new cbResultRow() { ... });
现在我想返回并读取datagrid中的单元格值

我见过一些从选定行或单元格读取数据的示例,因为我没有任何选择,用户不会与datagrid交互

我也见过类似这样的代码

foreach(DataGridRow myrow in myDataGrid.Rows)
然而,编译器说行不是datagrid的成员

我已经搜索了几个小时,试图找出如何做我认为是一件非常简单的事情

请帮忙

谢谢,
will.

构建WPF数据网格是为了绑定到数据表之类的东西。大多数情况下,您将修改DataTable以及DataTable中绑定到DataGrid的行/列

DataGrid本身是DataTable的可视元素。在一个循环中修改数据看起来是这样的

foreach(DataRow row in myTable.Rows)
{
    row["ColumnTitle"] = 1;
}
myTable.Rows[0][0] = 1;
这将使ColumnTitle列中的所有值都等于1。要访问单个单元格,它看起来像这样

foreach(DataRow row in myTable.Rows)
{
    row["ColumnTitle"] = 1;
}
myTable.Rows[0][0] = 1;

这会将DataTable中的第一个单元格设置为1。

构建WPF datagrid是为了绑定到类似DataTable的东西。大多数情况下,您将修改DataTable以及DataTable中绑定到DataGrid的行/列

DataGrid本身是DataTable的可视元素。在一个循环中修改数据看起来是这样的

foreach(DataRow row in myTable.Rows)
{
    row["ColumnTitle"] = 1;
}
myTable.Rows[0][0] = 1;
这将使ColumnTitle列中的所有值都等于1。要访问单个单元格,它看起来像这样

foreach(DataRow row in myTable.Rows)
{
    row["ColumnTitle"] = 1;
}
myTable.Rows[0][0] = 1;

这会将数据表中的第一个单元格设置为1。

这可能会帮助其他人

foreach (DataRowView row in dgLista.SelectedItems)
{
    string text = row.Row.ItemArray[index].ToString();
}

祝你好运

这可能会帮助其他人

foreach (DataRowView row in dgLista.SelectedItems)
{
    string text = row.Row.ItemArray[index].ToString();
}

祝你好运

下面是解决方案的摘要

Winform

类型:System.windows.Forms.DataGridView

// C#
foreach (DataGridViewRow row in dataGridView1.Rows)
{
  //"Column1" = column name in DataGridView
  string text = row.Cells["Column1"].value.ToString();
}
WPF当量

类型:DataGrid

// C#
foreach (DataRowView row in dataGrid.Items)
{
  string text = row.Row.ItemArray[index].ToString();
}

下面是解决方案的摘要

Winform

类型:System.windows.Forms.DataGridView

// C#
foreach (DataGridViewRow row in dataGridView1.Rows)
{
  //"Column1" = column name in DataGridView
  string text = row.Cells["Column1"].value.ToString();
}
WPF当量

类型:DataGrid

// C#
foreach (DataRowView row in dataGrid.Items)
{
  string text = row.Row.ItemArray[index].ToString();
}

感谢您的回复,我已经按照您建议的方式创建了一个列表,因为没有datatable并将datagrid绑定到列表,但我真的想知道是否有直接从datagrid访问单元格数据的方法。@dontpanic没有。在将来,您会发现列表与DataTable之间的工作方式不同。我甚至更喜欢ObservableCollection而不是List。感谢您的回复,我已经按照您建议的方式完成了,首先创建了一个List,因为没有datatable并将datagrid绑定到List,但我真的想知道是否有一种方法可以直接从datagrid访问单元格数据。@dontpanic没有。在将来,您会发现列表与DataTable之间的工作方式不同。我甚至更喜欢一个可观察的集合而不是一个列表。好主意。请注意:这只适用于最基本的情况,即您的数据源是DataView,并且您的DataGrid以相同的顺序显示数据源的所有列,即使用1到1的映射。好主意。请注意:这只适用于最基本的情况,即数据源是DataView,DataGrid以相同的顺序显示数据源的所有列,即使用1对1映射。