C# 过滤databound datagridview的dataview(带有combobox列)使其速度非常慢
我所面临的问题听起来像是同一个问题,然而,这里描述的解决方法对我来说并不适用(除非我误解了它) 我有一个C# 过滤databound datagridview的dataview(带有combobox列)使其速度非常慢,c#,winforms,datagridview,C#,Winforms,Datagridview,我所面临的问题听起来像是同一个问题,然而,这里描述的解决方法对我来说并不适用(除非我误解了它) 我有一个DataGridView,它绑定到DataTable,还有组合框列(根据上面链接中的用户,这很重要)。我试图根据一个单独的组合框来过滤这个DataGridView,但一旦我这样做,它就会变得慢得令人无法接受 目前,我的组合框中只有以下内容更改事件: private void cmbFilter_SelectedIndexChanged(object sender, EventArgs e) {
DataGridView
,它绑定到DataTable
,还有组合框
列(根据上面链接中的用户,这很重要)。我试图根据一个单独的组合框来过滤这个DataGridView
,但一旦我这样做,它就会变得慢得令人无法接受
目前,我的组合框中只有以下内容
更改事件:
private void cmbFilter_SelectedIndexChanged(object sender, EventArgs e)
{
(dgvVolReport.DataSource as DataTable).DefaultView.RowFilter = string.Empty;
}
所以我甚至没有过滤,甚至只是将.RowFilter
设置为字符串。空的会使它变慢
有人知道这方面的情况吗?如何修复或解决
更新:奇怪的是,如果我说这句话:
((DataTable)((DataGridView)sender).DataSource).DefaultView.RowFilter = string.Empty;
在我的CellEndEdit
事件中,只要组合框
SelectedIndexChanged
中的那一行不存在,它就不会使其变慢。因此,似乎是外部组合框
影响了性能。可能它触发得太频繁了?如果您有太多的行供UI循环,则列自动调整可能会减慢您的速度。如果有以下设置(以编程方式或在属性中),则可能需要更改设置。不要尝试。如果速度很快,请将其设置为使用标题或仅使用可见单元格
detailsDataGridView.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells;
不过,我不确定这对你有什么影响。似乎SelectedIndexChanged调用得太频繁了。如果在设置数据源
后设置了DisplayMember
和ValueMember
,则可能会发生这种情况,因为它将调用SelectedIndexChanged事件,然后再次遍历整个表
您还可以使用组合框。SelectionChangeCommitted
事件,它对数据绑定等您可能不希望触发事件的事情不太敏感。组合框。SelectionChangeCommitted
似乎解决了这个问题!谢谢