2013-03-16 41 views
0

我创建了一个winform程序,将ms access数据库中的数据加载到我的列表框中。当我点击我的项目,我想更新数据库和数据源在我的列表框中,并单击更新按钮,该项目不会更新第一次点击,但第二个(在同一项目),所以每次我需要修改我的数据我需要选择我的项目并点击更新按钮两次。这是疯狂的笑..列表框数据源在第一次点击时没有更新

private void buttonUpdate_Click(object sender, EventArgs e) 
    { 
     //update the database 
     OleDbDataAdapter cmd = new OleDbDataAdapter(); 
     cmd.UpdateCommand = new OleDbCommand("UPDATE Item SET ITEM = @ITEM, ITEM_DESC = @ITEM_DESC WHERE ID = @ID",GetConnection()); 
     cmd.UpdateCommand.Parameters.AddWithValue("@ITEM", textBoxITEM.Text); 
     cmd.UpdateCommand.Parameters.AddWithValue("@ITEM_DESC", textBoxITEMDESC.Text); 
     cmd.UpdateCommand.Parameters.AddWithValue("@ID", Convert.ToInt32(textBoxID.Text)); 
     cmd.UpdateCommand.ExecuteNonQuery(); 

     // update the datasource 
     _productlist.Clear(); 
     listBox1.DataSource = null; 
     listBox1.Items.Clear(); 
     Fill(); 
     listBox1.Update(); 
    } 
这种情况发生

基本的东西:

  1. 加载数据到列表框与数据绑定到文本框
  2. 点击项目在我的列表框和文本框修改数据
  3. 点击更新按钮以更新数据库和数据源
  4. datasource不是首次更新,但数据库确实更新
  5. 重复二号
  6. 重复3号
  7. 数据源更新

我想要什么:

  1. 加载数据到列表框与数据绑定到文本框
  2. 点击项目在我的列表框和修改文本框中的数据
  3. 单击更新按钮更新数据库和数据源
  4. dat asource和数据库更新

我该如何解决这个错误在我的应用程序?请让我知道,如果我需要更加清晰..

回答

0

我只是改变这个

// update the datasource 
_productlist.Clear(); 
listBox1.DataSource = null; 
listBox1.Items.Clear(); 
Fill(); 
listBox1.Update(); 

到这个..

// update the datasource 
_productlist.Clear(); 
listBox1.DataSource = null; 
System.Threading.Thread.Sleep(500); 
Fill(); 
相关问题