【发布时间】:2021-03-10 08:54:57
【问题描述】:
我的 DataGridView 有一个名为 flag 的列和其他列。
当我应用过滤器时:
dataGridView2.DataSource =
new DataView(ds, "flag = 1", "tw_Name DESC", DataViewRowState.CurrentRows);
它仅显示列 flag 值等于 1 的行,但是...
当我尝试以编程方式更改此值时,例如在 6 个选中的行中:
foreach (DataGridViewRow row in dataGridView2.Rows)
{
if (Convert.ToBoolean(row.Cells["zazn"].Value))
{
row.Cells["flags"].Value = 0;
}
}
三行消失,一行改变其值,两行不变。
接下来,当我单击任意行时,我只会得到 2 个所需的更改。
【问题讨论】:
-
您是否正在重置数据源以应用过滤器? -- 看起来你的 DGV DataSource 是一个 DataTable,然后,应用过滤器和排序:
var dv = (dataGridView2.DataSource as DataTable).DefaultView; dv.RowFilter = "flag = 1"; dv.Sort = "tw_Name DESC"; -
是的,DataSource 是一个 DataTable。我应用过滤器并像 Jimi 写的那样排序,但问题是一样的
标签: c# winforms filter datagridview