代码之家  ›  专栏  ›  技术社区  ›  Partial

WPF数据报:如何在数据报中迭代以获取行和列?

  •  3
  • Partial  · 技术社区  · 15 年前

    如何在 WPF数据报 就像一个 C中的窗体DataGridView# ?

    例如,如果您有窗体DataGridView,则可以执行以下操作:

    for(int i = 0; i < formsDataGrid1.Rows.Count; i++)
    {
      MessageBox.Show(formsDataGrid1.Rows[i].ToString());
      for(int j = 0; j < formsDataGrid1.Columns.Count; j++)
         MessageBox.Show(formsDataGrid1.Rows[i].Cells[j].ToString());
    }
    

    谢谢你的帮助!

    **编辑:

    我之所以要这样做,是因为用户将使用DataGrid在DataGrid的第二列中输入某些信息。另外,这个数据报有多行,我希望能够获取数据并用它更新数据库。

    3 回复  |  直到 9 年前
        1
  •  4
  •   Thomas Levesque    15 年前

    通常,您不会这样做:您访问基础数据源而不是数据报本身。例如,假设数据源是 IEnumerable<Foo> :

    foreach(Foo f in foos)
    {
        MessageBox.Show(f.Name);
    }
    

    编辑:

    不需要显式访问网格的特定单元格:如果网格绑定到对象列表,则当用户编辑网格中的相应单元格时,对象的属性将自动更新。

    带联系人列表的简单示例:

        public class Contact
        {
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public string Email { get; set; }
        }
        ...
        ObservableCollection<Contact> contacts = new ObservableCollection<Contact>();
        dataGrid.ItemsSource = contacts;
    
        ...
    
        2
  •  4
  •   mariko    9 年前

    dg是您的xaml数据报x:name

        for (int i = 0; i < dg.Items.Count; i++)
        {
            DataGridRow row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(i);
                for (int j = 0; j < dg.Columns.Count; j++)
                {
                    TextBlock cellContent = dg.Columns[j].GetCellContent(row) as TextBlock;
                    Console.WriteLine(cellContent.Text);
                }
        }
    
        3
  •  0
  •   Aliaksei Kliuchnikau poncius    12 年前

    尝试使用 Grid.Column[x].GetCellContent(Row[y]) 方法

    推荐文章