包含 3 列的自动完成文本框

本文关键字:文本 包含 | 更新日期: 2023-09-27 17:57:20

我有一个带有文本框的窗口表单,其工作方式类似于谷歌搜索,我有一个在列表中返回注册的存储过程,我在AutoComplete方法中使用列表,我面临的问题是我希望当用户输入注册时显示 3 列我想在下拉列表中显示帐户和所有者名称,就像这样注册|账号|所有者,但只能通过注册进行搜索。

这是我的存储过程方法

public static List<string> GetAircraftRegistrationList()
{
    List<string> list = new List<string>();
    Database db = DatabaseFactory.CreateDatabase("GCA");
    DbCommand dbCommand = db.GetStoredProcCommand("GetAircraftRegistrationList");
    using (IDataReader dataReader = db.ExecuteReader(dbCommand))
    {
        while (dataReader.Read())
        {
            list.Add(dataReader["Registration"].ToString());
        }
    }
    return list;
}

这是我的自动完成

public static void LoadAircraft(TextBox autocompleteTextBox)
{
    AutoCompleteStringCollection list = new AutoCompleteStringCollection();
    autocompleteTextBox.AutoCompleteMode = AutoCompleteMode.Suggest;
    autocompleteTextBox.AutoCompleteCustomSource = list;
    autocompleteTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
    list.AddRange(Aircraft.GetAircraftRegistrationList().ToArray());
}

这适用于注册。我将如何使帐户和所有者在文本框中显示为 3 列

所以我想要在文本框中这个:

目前,无论您如何切片,如果您键入"ab",您都会得到一个列表......

"Abacas"
"Abate"
"Abbrv."

使用多列选项,您可以键入"ch"并获得...

"Chris A.     | (656) 573-7834 | Blue"
"Christine B. | (656) 458-9823 | Purple"
"Charisma C.  | (656) 645-7823 | Green"

包含 3 列的自动完成文本框

请改用以下查询。

Dim com As New SqlCommand("Select Registration,Account,Owner from Registry where name like % " & txtbox.Text & " % ",conn)
Dim da As New SqlDataAdapter(com)
Dim ds As New DataSet
da.Fill(ds)
reg_drop.DataSource=ds.Tables(0)
reg_drop.DisplayMember="Registration"
reg_drop.ValueMember="Registration"
Account_drop.DataSource=ds.Tables(0)
Account_drop.DisplayMember="Registration"
Account_drop.ValueMember="Registration"