【问题标题】:WPF Datagrid read a cell valueWPF Datagrid 读取单元格值
【发布时间】:2016-04-13 08:09:22
【问题描述】:

我正在尝试了解如何读取我的 WPF 数据网格单元格的值。

类似

的东西
String myString = myDataGrid.Cells[1][2].ToString();

数据网格已在 XAML 中创建,我已使用行数据填充数据网格

reportGrid.Items.Add(new cbResultRow() { ... });

现在我想返回并读取数据网格中的单元格值。

我已经看到了一些从选定行或单元格读取数据的示例,因为我没有任何选择(用户不与数据网格交互)。

我也见过类似的代码

foreach(DataGridRow myrow in myDataGrid.Rows)

但是编译器说 Rows 不是数据网格的成员。

我已经搜索了几个小时,试图找出如何做我认为很简单的事情!

请帮忙,

谢谢, 会的。

【问题讨论】:

    标签: wpf datagrid


    【解决方案1】:

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

    DataGrid 本身是 DataTable 的可视元素。 Here is a pretty good tutorial on how to do this。在循环中修改数据看起来像这样。

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

    这只会使“ColumnTitle”列中的所有值都等于 1。要访问单个单元格,它看起来像这样。

    myTable.Rows[0][0] = 1;
    

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

    【讨论】:

    • 感谢您的回复,我已经按照您建议的方式完成了它,首先创建一个列表(因为没有数据表)并将数据网格绑定到列表,但我真的很想知道是否有一种方法可以直接从数据网格中访问单元格数据。
    • @dontpanic 没有。将来,您会发现 List 不如 DataTable 好用。我什至更喜欢 ObservableCollection 而不是 List。
    【解决方案2】:

    这可能对其他人有帮助。

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

    祝你好运!

    【讨论】:

    • 好主意。请注意:这仅适用于最基本的情况,您的数据源是 DataView 并且您的 DataGrid 以相同的顺序显示数据源的所有列,即 1 到 1 映射是用过。
    【解决方案3】:

    这里是解决方案的摘要。

    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 等效

    类型:数据网格

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2011-11-27
      相关资源
      最近更新 更多