Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在DataGridView上使用RowFilter后如何访问记录?_C#_Visual Studio 2010_Datagridview_Dataset - Fatal编程技术网

C# 在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

我有一个DataGridView,我在上面使用了RowFilter,如下所示:

(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再次显示。