从DataGridView获取DataTable,尊重过滤器和排序

Jon*_*zzi 2 .net c# winforms

我有一个System.Windows.Forms.DataGridView充满数据.我正在使用这样的代码:

System.Data.DataTable dataTable1;
System.Windows.Forms.BindingSource bindingSource1;
System.Windows.Forms.DataGridView dataGridView1;

// (...)

bindingSource1.DataSource = dataTable1;

dataGridView1.DataSource = bindingSource1;

bindingSource1.Filter = "Some Filter Here";
Run Code Online (Sandbox Code Playgroud)

我现在需要的是恢复其中的数据dataGridView1.但它不需要复杂.我的dataGridView1是readonly所以我唯一需要的是尊重订单和使用的过滤器,并将数据导出到DataTable.

有人可以帮帮我吗?

Sri*_*vel 7

如果我理解正确,您需要将过滤后的行显示DataGridView为DataTable.您可以为此目的使用DataTable.DefaultView属性,其中包括所有过滤器.

试试这个

BindingSource bs = (BindingSource)dataGridView1.DataSource;
DataTable table = (DataTable)bs.DataSource;
DataTable filtered = table.DefaultView.ToTable();// here we get filtered datatable
Run Code Online (Sandbox Code Playgroud)