C# 在DataGridView上使用RowFilter后如何访问记录?
我有一个DataGridView,我在上面使用了RowFilter,如下所示:C# 在DataGridView上使用RowFilter后如何访问记录?,c#,visual-studio-2010,datagridview,dataset,C#,Visual Studio 2010,Datagridview,Dataset,我有一个DataGridView,我在上面使用了RowFilter,如下所示: (dgv.DataSource as DataTable).DefaultView.RowFilter = whereClause; 在应用RowFilter之前,DataGridView有1087条记录,之后大约有8条记录 现在我想处理这8张唱片 我如何访问它们?如果您这样做 dgv.DataSource as DataTable 然后您可以执行以下操作 dataTable dt = dgv.DataSourc
(dgv.DataSource as DataTable).DefaultView.RowFilter = whereClause;
在应用RowFilter之前,DataGridView有1087条记录,之后大约有8条记录
现在我想处理这8张唱片
我如何访问它们?如果您这样做
dgv.DataSource as DataTable
然后您可以执行以下操作
dataTable dt = dgv.DataSource as DataTable;
DataRow[] rows = dt.Select("your filter goes here");
如果你愿意的话,你可以用Linq做同样的事情。这些是您的行,您可以使用它们。要仅编辑这些记录,请执行以下操作:
DataGridView.DataSource = rows;
此外,您还可以创建一个自定义数据视图,该视图将按您希望的方式过滤记录,并将datasource设置为该视图。但请记住,这里的关键是,无论您有多少视图,这都是您查看的同一个数据表
DataView view = new DataView();
view.Table = dt;
view.RowFilter = "your filter";
view.Sort = "your sort";
您可以使用来访问基础数据。
如果DataGridView绑定到DataView,则基础数据的类型为DataRowView。您可以使用如下代码:
var dataRow = dgv.Rows[rowIndex].DataBoundItem as DataRowView;
这为我提供了DataRow中的行,但我希望记录在RowFilter之后,并在DatagridView中更改其中一些记录,同时仍在Filter中mode@nnmmss我不知道你是什么意思。应用过滤器的地方有什么区别?如果要在DataGridView中查看这些记录,请执行DataGridView.DataSource=rows@TS:在这种情况下,我会丢失所有1087条记录,而我只有8条经过筛选的记录。对于所有这些1087条reocrds,我应该从数据库中获取。这是真的吗?@nnmms你什么也没失去。您的所有记录都在数据表中。您只需将网格绑定到子集。事实上,您将引用数据表中存在的记录。如果你换了一张,你的桌子也会换。你去试试吧。看到了吗effect@TS:如果我设置DataGridView.DataSource=rows,我认为这不是真的;此后,DataGridView记录的总数为8条记录,但在dgv.DataSource中为DataTable.DefaultView.RowFilter=Where子句;它是1087条记录,当我使用dgv.DataSource作为DataTable.DefaultView.RowFilter=null时,整个1087再次显示。