0

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

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

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是一个独特的领域。

4

2 回答 2

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

请不要忘记using围绕您的 OleDbConnection、OleDbCommand 和 OleDbDataReader 的声明。这将确保正确处理前面提到的变量。

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

于 2012-04-05T21:18:14.703 回答
1

将您的ComboBox AutoCompleteMode属性设置为SuggestAND AutoCompleteSourceListItems否则您将看不到建议。

就像史蒂夫说的那样,您可以更改查询并在请求字段中添加 ORDER BY 以设置您希望它们在 SELECT 语句中的顺序。

希望这会有所帮助,如果您有任何问题,请不要犹豫。

于 2012-04-05T21:25:55.530 回答