在我的winform中,有2 column, 1st one is studentname & 2nd column is StudentAverage
的数据表
首先txtbx是autosuggest(studentname)。
如何使第二个txtbx根据第一个txtbx自动填充(第二个txtbx填充相应的第二列记录(studentsavrage)?
这是第一个txtbx;显示学生姓名
private void txtbxName_TextChanged(object sender, EventArgs e)
{
AutoCompleteStringCollection namesCollection = new AutoCompleteStringCollection();
string StrCmd = "SELECT * FROM School";
string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\School_Database.accdb";
OleDbConnection MyConn = new OleDbConnection(ConnStr);
MyConn.Open();
OleDbCommand Cmd = new OleDbCommand(StrCmd, MyConn); ;
OleDbDataReader ObjReader = Cmd.ExecuteReader();
if (ObjReader != null)
{
while (ObjReader.Read())
namesCollection.Add(ObjReader["StudentName"].ToString());
}
else
{
MessageBox.Show("Data not found");
}
ObjReader.Close();
MyConn.Close();
txtbxName.AutoCompleteMode = AutoCompleteMode.Suggest;
txtbxName.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtbxName.AutoCompleteCustomSource = namesCollection;
}
答案 0 :(得分:0)
我假设您正在使用WinForms进行开发。
首先输出:由于查询中缺少where子句,因此在用户输入文本时不会进行过滤。如果你不想要,你应该在另一个地方移动AutoCompleteStrinCollection。
您的问题:此处更简单的方法是手动更新txtbxName_TextChanged
方法中的第二个文本框。
private void txtbxName_TextChanged(object sender, EventArgs e)
{
string StrCmd = String.Format( "SELECT AGE FROM School WHERE name '{0', txtbox1.Text");
//perform query as you already do and read result
textbox2.Text = cmd.ExecuteScalar()
}
P.S:在现实世界中,事情并没有像你在许多方面所做的那样完成