【问题标题】:Efficient Auto-Complete TextBox高效的自动完成文本框
【发布时间】:2014-07-28 08:41:53
【问题描述】:

我正在我的 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 事件上调用此方法。有没有更有效的方法来做到这一点?

【问题讨论】:

  • 在印度英语中使用术语 lakh (100,000) 和 crore (10,000,000) 来表示大量数字wikipadia

标签: c# winforms autocomplete visual-studio-2013 radtextbox


【解决方案1】:

任何试图在用户输入字符时提供数百万条记录的系统都会崩溃。如果您预加载它,即未经过滤地访问它,将需要很长时间和大量 RAM 才能启动..

因此,您应该尝试向您的数据添加测量算法。这通常是几件事的组合。立即想到两件事:

  • 记录被接受为正确记录的次数将添加到衡量值中
  • 不被接受的时间跨度将从测量值中减去

您可能想谷歌 Google 自动完成算法 以获得更多想法..

而不是选择你会选择的所有内容

  • 使用order by gauge-field 选择
  • 使用where 子句选择以仅获取最佳记录
  • 连续降低仪表阈值,直到结果集相当大

我假设您使用 Telerik AutoCompleteBox?访问他们的forums 也可能会有所帮助..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-18
    • 2010-09-22
    • 2014-02-07
    • 2015-04-13
    • 2011-08-20
    • 1970-01-01
    相关资源
    最近更新 更多