[英]Efficient Auto-Complete TextBox
我正在Windows窗體應用程序中實現與Google一樣工作的搜索功能。 我已經實現了自動完成,如下所示:
private void MemberSearch()
{
// Name Search
ConnectionClass.GetInstance().connection_string = Properties.Settings.Default.MindMuscleConnectionString;
ConnectionClass.GetInstance().Sql = "select MemberInfo.memberName from MemberInfo";
DataSet ds = ConnectionClass.GetInstance().GetConnection;
AutoCompleteStringCollection name = new AutoCompleteStringCollection();
for (int x = 0; x < ds.Tables[0].Rows.Count; x++)
{
name.Add(ds.Tables[0].Rows[x].ItemArray.GetValue(0).ToString());
}
memberNameSearchTxtBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
memberNameSearchTxtBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
memberNameSearchTxtBox.AutoCompleteCustomSource = name;
// ID Search
ConnectionClass.GetInstance().Sql = "select MemberInfo.memberID from MemberInfo";
ds = ConnectionClass.GetInstance().GetConnection;
AutoCompleteStringCollection id = new AutoCompleteStringCollection();
for (int x = 0; x < ds.Tables[0].Rows.Count; x++)
{
id.Add(ds.Tables[0].Rows[x].ItemArray.GetValue(0).ToString());
}
memberIdSearchTxtBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
memberIdSearchTxtBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
memberIdSearchTxtBox.AutoCompleteCustomSource = id;
}
盡管此自動完成功能可以正常工作,但我認為如果記錄數百萬或更多,此方法是否可以正常工作? 我在窗體Load
事件上調用此方法。 有更有效的方法嗎?
任何在用戶鍵入字符時嘗試提供數百萬條記錄的系統都會崩潰。 而且,如果您預加載它,那么未經過濾就可以訪問它,這將需要很長時間並且要啟動大量RAM。
因此,您應該嘗試向數據添加計量算法。 這通常是幾件事的組合。 立即想到兩件事:
您可能想用Google谷歌自動完成算法來獲取更多的想法。
而不是選擇所有內容,然后
order by gauge-field
選擇order by gauge-field
where
子句選擇僅獲得最佳記錄 我假設您使用Telerik AutoCompleteBox? 訪問他們的論壇也可能會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.