我正在構建一個簡單的勝利形式的應用程序與一個數據網格,一個文本框。 我有大約10K的名字記錄。文本框自動完成 - Winform + LINQ
我想要做的就是實現某種形式的自動完成功能,這樣當用戶鍵入到文本框,數據網格被更新,以顯示相應的比賽。
只是爲了測試這一點,我有一個DataContext對象,它返回名稱表,我把一些代碼在textBox1_TextChanged事件數據源與
this.dataGrid1.DataSource = (from p in connectionWrapper.getConnectionObj.PatientsNormalizeds where p.Name.Contains(textBox1.Text) select p).Take(30);
這工作在本地連接罰款復位但是當從遠程SQL服務器提取數據時,這當然太慢了,打字變得緩慢並且對於用戶來說是不可接受的。
只是不知道什麼可以在沒有改變設計來完成。我當然可以在form_loading中將整個表格加載到列表或DataTable中,並針對它執行搜索,但這會導致表單停止響應3秒左右...
這對大多數開發人員來說可能非常簡單,但我很新。
謝謝!
其實,你首先選擇包含在DB用戶輸入的所有名稱,只有在這之後,你採取的第一個30個結果。但你的數據庫已經完全處理!您應該在找到30個第一個結果後立即停止您的查詢。我不太瞭解LINQ或SQL,但如果你這樣做,解決方案應該很簡單。 – 2010-11-16 13:44:01
是一個字符串還是填充一個對象?有時候,如果你返回一些對象,它會顯着減慢你的加載時間,因爲它必須填充每個對象。 – Gage 2010-11-16 13:46:08
這是一個對象,但沒有什麼幻想,只是名稱,dob,電話#等等等。 – Rillanon 2010-11-16 13:53:02