基本上,我有一个类似电子表格的应用程序,可以对大型XML文档进行更改。对于表格显示,我使用了绑定到DataTable的DataGrid。我有两个日期选择器,用于选择我想要显示的行范围。问题是,我不知道如何,而且我无法在线找到合适的解决方案。
我已尝试将此作为对datepickers进行更改时显示的内容:
return table.AsEnumerable().Skip(StartDateIndex()).Take(DateRange()).CopyToDataTable();
...它在视觉上有效,但它不再是同一个表格,因此我对其所做的任何更改都不会应用于我的数据集。
任何人都可以指出我将采用什么方法来解决这个问题?或者也许给我看一个例子?
提前致谢:)
答案 0 :(得分:0)
首先,您可以在保存逻辑中使用新的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;