【问题标题】:search box with database带数据库的搜索框
【发布时间】:2016-11-11 01:25:12
【问题描述】:

我正在使用 C#.net Windows 窗体,我需要创建一个搜索文本框来显示组合框值(类似于 google 搜索); 组合框中显示的值将是 SQL 2005 数据库中的值(例如,用户正在搜索 FirstName,组合框将显示所有名字,当用户键入更多字母时,这些名字会被过滤……如果用户正在搜索姓氏,组合框显示数据库中的所有姓氏值..等)

对如何完成这项任务有任何想法吗?

【问题讨论】:

    标签: c# .net winforms autocomplete


    【解决方案1】:

    这是一种来自网络的解决方案,它可以满足您的需求,但会产生负面影响,即从一开始就加载所有内容,而不是执行小查询。

    List<string> namesCollection = new List<string>();
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = 'Connexion String or From File'
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = conn;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "Select distinct [Name] from [Names] order by [Name] asc";
    conn.Open();
    SqlDataReader dReader = cmd.ExecuteReader();
    if (dReader.HasRows == true)
    {
       while (dReader.Read())
       namesCollection.Add(dReader["Name"].ToString());
    }
    dReader.Close();
    
    txtName.AutoCompleteMode = AutoCompleteMode.Suggest;
    txtName.AutoCompleteSource = AutoCompleteSource.CustomSource;
    txtName.AutoCompleteCustomSource = namesCollection;
    

    【讨论】:

    • 是的,但我有公司定制的文本框,它没有自动完成模式选项。是否可以使用组合框,我的意思是当我输入名称中的第一个字母时,它将显示以该字母开头的所有名称。你能帮帮我吗
    【解决方案2】:

    您应该将AutoCompleteSource 属性设置为CustomSource,然后将AutoCompleteCustomSource 属性设置为数据库中的字符串集合。

    【讨论】:

    • 我知道那件事。但我不确定它是否能以 Windows 形式工作
    • thanq slakhs ...但我怀疑这适用于字符串,但如何连接数据库
    • 您需要使用 ADO.Net 连接到数据库并使用 SQL 命令从中获取字符串。