【问题标题】:WPF Displaying a selected range of DataTable rows in DatagridWPF 在 Datagrid 中显示选定范围的 DataTable 行
【发布时间】:2017-09-06 06:36:22
【问题描述】:

基本上,我有一个类似电子表格的应用程序,可以对大型 XML 文档进行更改。对于表格显示,我使用了绑定到 DataTable 的 DataGrid。我有两个日期选择器用于选择要显示的行范围。问题是,我不知道怎么做,也无法在网上找到合适的解决方案。

我已尝试将此作为更改日期选择器时显示的内容:

return table.AsEnumerable().Skip(StartDateIndex()).Take(DateRange()).CopyToDataTable();

...它在视觉上工作,但它不再是同一个表,所以我对它所做的任何更改都不会应用于我的数据集合。

谁能指出我解决这个问题的正确方法是什么?或者给我举个例子?

在此先感谢 :)

【问题讨论】:

    标签: wpf mvvm datatable datagrid range


    【解决方案1】:

    首先您可以在保存逻辑中使用新的DataTable,或者使用table.Merge方法将其合并到原始DataTable中。

    另外,您可以使用 CollectionView 过滤器:

    var collView = CollectionViewSource.GetDefaultView(table.Rows) as CollectionView;
    collView.Filter = dr => (DateTime)((DataRow)dr)[0] > dtPicker1.Value;
    return collView;
    

    另外,考虑使用DataView.RowFilter

    var view = table.DefaultView;
    view.RowFilter = string.Format("theFieldDate > #{0}# and theFieldDate < #{1}#",
                                    dtPicker1.Value.ToString("MM/dd/yyyy"), 
                                    dtPicker2.Value.ToString("MM/dd/yyyy")
                                  );
    return view;
    

    【讨论】:

      猜你喜欢
      • 2013-06-11
      • 2015-09-18
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多