簡體   English   中英

高效的自動完成文本框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM