我有一个填充了数据库中数据字段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
是一个独特的字段。
答案 0 :(得分:1)
请不要忘记OleDbConnection,OleDbCommand和OleDbDataReader周围的using
语句。这将确保妥善处理前面提到的变量。
要检查不完整的值,您应该添加Validating事件,并在此情况下检查输入的文本是否出现在字符串中。
组合框有一个名为FindStringExact()的方法可以提供帮助。
答案 1 :(得分:1)
将ComboBox
AutoCompleteMode
属性设置为Suggest
并AutoCompleteSource
设置为ListItems
,否则您将看不到该建议。
就像史蒂夫所说,您可以更改查询并在请求字段中添加ORDER BY,以便在SELECT语句中设置所需的顺序。
如果您有任何问题,希望这有助于不要犹豫。