如果我从数据源加载DataGridView,
this.exampleTableAdapter.Fill(this.refdataDataSet.Example);
通过绑定源应用过滤器
exampleBindingSource.Filter = "TrackingId = 'x'";
然后尝试迭代过滤的DataGridView并修改它们
foreach (DataGridViewRow row in datagridExampleList.Rows)
{
//Tried to set rows directly
row.Cells["TrackingId"].Value = "";
//Also tried variations of setting the DataBoundItem directly
}
但是,由于某种原因,它不会遍历整个集合。
当我调试时,我返回了Rows集合(使用与过滤器匹配的x项进行过滤),但是当我更改集合中的值(特别是作为过滤器目标的值)时,集合会随时更改即使过滤器被挂起且列表更改事件已设置为false,迭代也会错过项目。
似乎没什么用。
有什么建议吗?
答案 0 :(得分:1)
以下代码必须让您更改所有行。
var filter = exampleBindingSource.Filter;
exampleBindingSource.Filter = null;
foreach (DataGridViewRow row in datagridExampleList.Rows)
{
//Tried to set rows directly
row.Cells["TrackingId"].Value = "";
//Also tried variations of setting the DataBoundItem directly
}
exampleBindingSource.Filter = filter;
答案 1 :(得分:0)
要避免使用行枚举器,可以尝试使用循环:
int c = datagridExampleList.Columns["TrackingId"].Index;
for (int r = datagridExampleList.RowCount - 1; r >= 0; r--)
datagridExampleList[c, r].Value = "";