2014-04-07 166 views
-1

我有工作方式类似于谷歌搜索文本框Windows窗体,我已经在列表中返回一个注册的存储过程,我用在AutoComplete方法列表,我的问题面对的,是我想3列到当用户输入我想说明的账号和所有者名称在下拉列表中登记所以像这样的注册证明|账户|业主,但只能通过注册搜索。自动完成文本框3列

这里是我的StoredProcedure的

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" 

回答

-1

使用以下查询来代替。

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"