2013-07-18 164 views
0

我在Form1,从数据库中获取价值组合框不更新

Form 1代码得到了comboBox

public void fillComboBox() 
{   
    using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString)) 
    { 
     myDatabaseConnection.Open(); 
     using (SqlCommand mySqlCommand = new SqlCommand("Select LastName, FirstName, MiddleName from EMP", myDatabaseConnection)) 
     using (SqlDataReader sqlreader = mySqlCommand.ExecuteReader()) 
     { 
      while (sqlreader.Read()) 
      { 
       string Lname = sqlreader.GetString(sqlreader.GetOrdinal("LastName")); 
       string Fname = sqlreader.GetString(sqlreader.GetOrdinal("FirstName")); 
       string Mname = sqlreader.GetString(sqlreader.GetOrdinal("MiddleName")); 
       string fullName = Lname + ", " + Fname + " " + Mname; 
       comboBox3.Items.Add(fullName); 
      } 
     } 
    } 
} 

从FORM1我有一个button打开的FORM2,我可以在数据库中添加数据。

FORM2代码:

public void addData() 
{ 
    string a = "INSERT INTO Emp(LastName, FirstName, MiddleName) Values('"+textBox1.Text+"', '"+textBox2.Text+"', '"+textBox3.Text+"')"; 

    using (SqlConnection myDatabaseConnection1 = new SqlConnection(myConnectionString.ConnectionString)) 
    { 
     myDatabaseConnection1.Open(); 
     using (SqlCommand mySqlCommand = new SqlCommand(" " + a + " ", myDatabaseConnection1)) 
     mySqlCommand.ExecuteReader(); 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    addData(); 
    Form1 nf = new Form1(); 
    nf.fillComboBox(); 
    this.close 
} 

我检查数据库,并验证数据被添加。
问题是,当我在数据库中添加数据时,comboBox不会更新它加载的数据。它只会在我再次运行程序后更新。

回答

4

有了这个代码:

Form1 nf = new Form1(); 
nf.fillComboBox(); 

您正在创建一个新的Form1后DB更新(而不是显示它)。您不刷新原始Form1

要查看此信息,请在fillComboBox()调用后添加:nf.Show();

您必须在关闭Form2后刷新原始Form1

例如:

if(form2.ShowDialog() == DialogResult.OK) 
    fillComboBox(); 

fillComboBox,你应该添加新条目之前清除comboBox3.Items