C# 应用BindingSource.Filter后出现DataGridView错误,导致哪些行为零?
我不明白为什么会这样。我有一个DataGridView,其数据源设置为BindingSource(用于过滤和导航) 我有一个项目列表,单击1个项目将为myBindingSource应用相应的过滤器,结果只显示满足myDataGridView条件的行。像这样:C# 应用BindingSource.Filter后出现DataGridView错误,导致哪些行为零?,c#,exception,datagridview,filter,bindingsource,C#,Exception,Datagridview,Filter,Bindingsource,我不明白为什么会这样。我有一个DataGridView,其数据源设置为BindingSource(用于过滤和导航) 我有一个项目列表,单击1个项目将为myBindingSource应用相应的过滤器,结果只显示满足myDataGridView条件的行。像这样: private void ItemsClicked(object sender, ItemClickedEventArgs e){ myBindingSource.Filter = e.FilterExpression; } 当
private void ItemsClicked(object sender, ItemClickedEventArgs e){
myBindingSource.Filter = e.FilterExpression;
}
当我单击使myDataGridView显示至少一行的项目时,这一切正常。但是,当我单击任何导致0行符合相应筛选器表达式的项时,情况就变得糟糕了。myDataGridView通常应为空,但它在某些对话框中引发了大量异常(因此出现)(代码编辑器窗口中没有以黄色标记显示异常),下面是错误对话框的快照:
单击“确定”按钮后,它仍然显示另一个(同一个)对话框。。。。它继续显示许多对话框(具有相同的消息),直到停止所有对话框。我不明白那是什么。我不知道你是否需要更多的信息,但我希望你也经历过类似的异常情况,并给我一些关于如何修复此问题的建议。对话框中说的是DataError事件,但我不明白这里为什么会有错误?请注意,如果在应用筛选器后my dataGridView中至少有一行,则所有筛选器都将正常运行,只有在筛选器后没有行时才会发生错误
请帮帮我,谢谢你 因为没有要过滤的内容,所以会出现错误, 在筛选之前,请使用以下选项
if (dataGridView1.Rows.Count > 0)
{
//do filter codes here
}
希望这能有所帮助。因为没有什么可过滤的,所以会出现错误, 在筛选之前,请使用以下选项
if (dataGridView1.Rows.Count > 0)
{
//do filter codes here
}
希望这有帮助。这是我的答案,我不太明白这一点,但我只是尝试了一下,效果很好 我的规则是:
myBindingSource.SuspendBinding()代码>
myBindingSource.Filter=“过滤器表达式”代码>
ResumeBinding()
方法将所有控件重新绑定到BindingSource,如下所示:
myBindingSource.ResumeBinding()代码>
=>我的主表(表1)有一个名为a的主键列,这个表有一个名为B的外键,它引用另一个表(表2)中的主键列。表2有一个外键,它引用另一个表(表3)中名为C的主键列。事实上,我有一个选择所有a、B、C列的查询(当然这里没有提到其他列)。这种关系正是我所怀疑的,但我仍然不清楚它为什么会和如何会引起错误。如果不使用绑定并手动分配/更新所有值,则不会出现任何错误。绑定有时真的很复杂 这是我的答案,我不太明白这一点,但我只是尝试了一下,效果很好 我的规则是:
myBindingSource.SuspendBinding()代码>
myBindingSource.Filter=“过滤器表达式”代码>
ResumeBinding()
方法将所有控件重新绑定到BindingSource,如下所示:
myBindingSource.ResumeBinding()代码>