我有一个datagridview DataGridView1,绑定到DataTable1BindingSource,唯一可写单元格是绑定到布尔列的复选框" IsSelected"。一旦用户选中该复选框,我只想显示选中复选框的行。所以我把以下代码:
Private Sub DataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
DataGridView1.EndEdit()
DataTable1BindingSource.Filter = "IsSelected"
End Sub
但它不起作用 - 一旦检查了ckeckbox,datagridview根本不会显示任何行。
如果我移动语句DataTable1BindingSource.Filter =" IsSelected"单独的命令按钮,
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataTable1BindingSource.Filter = "IsSelected"
End Sub
然后在编辑复选框然后单击按钮时,它按预期工作,即仅显示此行。
为什么它在立即发布时不起作用?
答案 0 :(得分:1)
Sender.EndEdit
,在应用过滤器之前,还必须发出
DataTable1BindingSource.EndEdit
然后一切按预期工作。