2015-02-06 121 views
0

在我的winform中,有一个包含2 column, 1st one is studentname & 2nd column is StudentAverage的数据表。
首先txtbx是autosuggest(studentname)。 如何使第二txtbx根据第一txtbx automaticaly填充(第二txtbx填充第二柱(studentsavrage)的相应记录如何根据第一个文本框自动填充第二个文本框以及数据库中的相应数据

这是针对第一txtbx;显示StudentNames

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

我假设你正在用WinForms开发

首先:由于你的查询中缺少where子句,所以你在用户输入文本时没有进行过滤,你应该在另一个地方移动AutoCompleteStrinCollection获取if你不想那样。

您的问题:这里最简单的方法是手动更新您的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:在现实世界中的事情都没有做,你是在很多很多方面

+0

谢谢您的回答做的方式,但它没有工作! – beginnner 2015-02-16 17:22:22

相关问题