在我的表單中,有一個datagridview可能會達到約70k個項目,具體取決於掃描客戶獲得的快樂程度。我也有一個文本框,允許用戶使用textchanged事件搜索datagridview。我使用類似子句的select語句並填充數據集。我不認爲這會削減它,因爲當有大量記錄時,程序會掛起並且會變得遲緩。如果性能是重中之重,我能做到這一點的最佳方式是什麼?在VB.NET中通過DataGridView搜索的最佳方法?
回答
如果您不擔心所選記錄的數量,只需下載整個數據集即可。
在您填充的表上創建一個dataview對象。
設置DataGridView.DataSource =您的dataview對象。
然後,不要使用文本框的textchanged事件來填充數據集,而是使用它來更改數據視圖中的.RowFilter屬性。
提高性能的顯而易見的方法是過濾一個按鈕,而不是經常調用的textchanged事件。
如果您不想改變它的工作方式,另一個選擇是直到輸入了多個字符纔開始搜索,然後等待至少x秒鐘後再發射另一個搜索。
我想這可能是最好的選擇。 – broke
我在過去的TextChanged事件中遇到了同樣的問題。我只是決定用一個按鈕來代替。 –
我發現的最好方法是在另一個線程上實際運行SQL查詢,將數據集存儲在內存中,並讓計時器每毫秒添加10條記錄。這樣用戶界面仍然填滿,但主處理器並不忙於繪製整個時間,用戶仍然可以鍵入。這可以根據運行的計算機進行放大和縮小。我已經使用Listbox和組合框完成了這一工作,並且它非常簡單(如果您使用委託來計數並調用簡單)。
這應該給你你想要的表現......也就是說,如果你有足夠的時間來實現它。
~~~~~~~~~~~~~~~~~~~~編輯~~~~~~~~~~~~~~~~~~~~
如果你希望,我可能會發布這個列表框版本的示例代碼,因爲我實際上沒有看到網絡上的任何其他人這樣做。
詳細闡述Meta-Knights的答案:我遇到了類似於您的問題,並決定使用計時器,該計時器在用戶鍵入密鑰時啓動。我將它設置了2秒,因爲我的用戶通常在輸入信息時正在閱讀信息。它似乎工作得很好,用戶對自動搜索功能非常滿意。
本質上的僞代碼如下:
Sub TextChanged()
MyTimer.Enabled= TextBox.TextLength > 0
End Sub
Sub TimerTick()
MyTimer.Enabled=False
Lookup(TextBox.Text)
MyTimer.Enabled=True
End Sub
- 1. 通過DataGridView搜索
- 2. 在搜索引擎中搜索Ruby語法的最佳方法
- 3. 在搜索結果中過濾的最佳方法
- 4. 在Django中實現過濾器/搜索的最佳方法
- 5. 在rom中搜索的最佳方式
- 6. 可搜索的MultiSelect或最佳方法
- 7. 通過的DataGridView VB.NET中
- 8. 在vb.net中爲Datagridview搜索代碼
- 9. 在彈性搜索中索引json對象的最佳方法
- 10. 在彈性搜索中實現此方案的最佳方法
- 11. 什麼是最佳搜索方法?
- 12. 在sql server中的varchar列中搜索的最佳方法
- 13. 搜索最佳點搜索算法
- 14. 用Fluent NHibernate搜索排除搜索對象的最佳方法
- 15. 通過Zend通過電子郵件搜索的最佳方式是什麼?
- 16. 在Phalcon ORM的所有欄目中搜索的最佳方法?
- 17. 在Eclipse中搜索字符串實例的最佳方法
- 18. 在大文字文件中搜索的最佳方法
- 19. 在xml文件中搜索數據的最佳方法?
- 20. 在javascript數組中搜索項目的最佳方法
- 21. PHP在數組中搜索字符串值的最佳方法?
- 22. 在symfony 2中搜索函數的最佳方法
- 23. 在Android中創建複雜搜索表單的最佳方法
- 24. 在ASP.Net MVC 3.0中提前搜索的最佳方法?
- 25. 在lucene中搜索日期可用性的最佳方法
- 26. 通過文本框搜索datagridview c#.NET
- 27. 通過DataGridView搜索行和列循環
- 28. 構建搜索聯繫人的Lucene搜索索引的最佳方法
- 29. 的最佳方式,搜索和C#
- 30. 執行搜索的最佳方式
不要猶豫,給予好評/接受的答案,可以幫助您;-) –