gpt4 book ai didi

c# - 过滤数据绑定(bind)数据 GridView (带有组合框列)的数据 View 使其速度非常慢

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:09 31 4
gpt4 key购买 nike

我面临的问题听起来与 http://www.windows-tech.info/3/fc05dcdb57f27f48.php 相同,但是,那里描述的解决方法对我不起作用(除非我误解了它)。

我有一个 DataGridView,它绑定(bind)到一个 DataTable,还有 ComboBox 列(这对用户来说很重要上面的链接)。我正在尝试根据单独的 ComboBox 过滤此 DataGridView,但一旦我这样做,它就会变得非常慢。

目前我的 ComboBox 更改事件中只有这个:

private void cmbFilter_SelectedIndexChanged(object sender, EventArgs e)
{
(dgvVolReport.DataSource as DataTable).DefaultView.RowFilter = string.Empty;
}

所以我什至没有过滤,甚至只是将 .RowFilter 设置为 string .Empty 使其变慢。

有没有人知道这件事,如何解决它或解决方法?


更新:奇怪的是,如果我调用这一行:

((DataTable)((DataGridView)sender).DataSource).DefaultView.RowFilter = string.Empty;

在我的 CellEndEdit 事件中,只要 ComboBox SelectedIndexChanged 中的那一行不存在,它就不会变慢。因此,似乎是影响性能的是外部 ComboBox。可能触发太频繁了?

最佳答案

如果您的 UI 需要循环浏览的行太多,则您的列自动调整大小可能会减慢您的速度。如果您有以下设置(以编程方式或在属性中),那么您可能想要更改设置。没有尝试。如果速度很快,请将其设置为使用标题或仅使用可见单元格。

detailsDataGridView.AutoSizeColumnsMode = 
DataGridViewAutoSizeColumnsMode.AllCells;

不过,我不确定这是否会影响到您。似乎 SelectedIndexChanged 被调用得太频繁了。如果您在设置 datasource 之后设置 DisplayMemberValueMember,就会发生这种情况,因为它会调用 SelectedIndexChanged 事件,然后遍历您的整个事件再次表。

您还可以使用 ComboBox.SelectionChangeCommitted 事件,它对数据绑定(bind)等您可能不希望事件触发的事情不太敏感。

关于c# - 过滤数据绑定(bind)数据 GridView (带有组合框列)的数据 View 使其速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31138746/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com