通过键入在combobox中排序值

时间:2012-04-05 21:10:45

标签: c#

我有一个填充了数据库中数据字段JobCode的组合框。共有1000个jobcode,当用户需要选择一个jobcode时,他必须向下滚动组合框中的所有jobcode。我是否可以这样做:如果用户键入jobcode的某个字母,它将在列表顶部的组合框中显示以该字母开头的jobcode,以便用户可以轻松选择。例如,就像在组合框中的keypressevent中添加一些代码一样。

用户仍必须从列表中的jobcode中进行选择,而不是保留部分或错误输入的数据,这些数据会在插入和更新时导致错误的数据输入。

public void jobcomboboxload()
{
       OleDbConnection oleDbConnection1 = new System.Data.OleDb.OleDbConnection(connString);
       oleDbConnection1.Open();
       OleDbCommand oleDbCommand1 = new System.Data.OleDb.OleDbCommand("Select jobpk,jobcode from  jobcodemastertable", oleDbConnection1);
       OleDbDataReader reader = oleDbCommand1.ExecuteReader();
       DataTable dt = new DataTable();
       dt.Columns.Add("jobpk", typeof(int));
       dt.Columns.Add("jobcode", typeof(string));
       dt.Load(reader);
       cmbjobcode.ValueMember = "jobpk";
       cmbjobcode.DisplayMember = "jobcode";
       cmbjobcode.DataSource = dt.DefaultView;

       oleDbConnection1.Close();
   }

jobcode是一个独特的字段。

2 个答案:

答案 0 :(得分:1)

  • 使用cmbjobcode.AutoCompleteMode = AutoCompleteMode.Suggest(或其他 枚举值
  • 使用cmbjobcode.AutoCompleteSource = AutoCompleteSource.ListItems
  • 更改您的查询,包括字段jobcode
  • 上的ORDER BY子句

请不要忘记OleDbConnection,OleDbCommand和OleDbDataReader周围的using语句。这将确保妥善处理前面提到的变量。

要检查不完整的值,您应该添加Validating事件,并在此情况下检查输入的文本是否出现在字符串中。
组合框有一个名为FindStringExact()的方法可以提供帮助。

答案 1 :(得分:1)

ComboBox AutoCompleteMode属性设置为SuggestAutoCompleteSource设置为ListItems,否则您将看不到该建议。

就像史蒂夫所说,您可以更改查询并在请求字段中添加ORDER BY,以便在SELECT语句中设置所需的顺序。

如果您有任何问题,希望这有助于不要犹豫。