.NET 2.0 DataGridView ComboBox 列 - 显示项目缓慢
关于如何提高大型项目集的 DataGridViewComboBoxColumn 性能有什么建议吗?
我有一个 DataGridView,其中有几个 DataGridViewComboBoxColumn 类型的列。 我将这些组合框列数据绑定到一个相当大的集合(10k+ 项)。 因此,显示项目的速度非常慢(当我单击单元格上的向下箭头按钮时,大约需要 10 秒才能显示项目)。
我已经使用标准 ComboBox 控件测试了相同的项目集合,并且它运行得非常快。
有任何想法吗?
谢谢。
Any suggestions on how to improve DataGridViewComboBoxColumn performace with large item sets?
I've got a DataGridView with several columns of type DataGridViewComboBoxColumn. I'm databinding those combobox columns to a rather large collection (10k+ items). As a result it's very slow to display the items (when i click on the down-arrow button on a cell it takes about 10 seconds to display the items).
I've tested the same collection of items with a standard ComboBox control, and it works really fast.
Any ideas?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
更好的解决方案是使用数据库中的值填充字符串数组,并将列数据源设置为 null,然后将该列的 Items 属性设置为您填充的值的数组。 这样,每次填充组合框时就不会重新查询数据库。 希望这可以帮助。
A much better solution is to populate a string array with the values from the database and set the column datasource to null, then set the Items property of the column to the array of values you populated. This way it does not requery the database each time it populates the combobox. Hope this helps.
最好的方法是对连接功能请求进行投票微软连接:)
The best way is to vote connect feature request about it on MS connect :)
您是否要将 10k 项数据绑定到组合框或数据网格?
无论哪种方式,您都应该考虑设计的可用性。
如果是数据网格,则使用分页并将数据源的大小削减到更合理的大小。
如果它是组合框,那么您的解决方案将无法使用。 您最好为用户提供一个自动完成框,例如 ajax 工具包中的自动完成框 (http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AutoComplete/AutoComplete.aspx)或一个弹出窗口,他们可以通过该弹出窗口分页或搜索您的 10k 项。
Are you data binding 10k items to the combo boxes or the data grid?
Either way you should think about the usability of your design.
If its to the data grid then use paging and cut the size of the data source bound to a more reasonable size.
If its to the combo box then your solution can't be usable. You'd be better giving your users an autocomplete box like the one from the ajax toolkit (http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AutoComplete/AutoComplete.aspx) or a popup though which they can page or search though your 10k items.