0

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

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. 数据源第一次没有更新,但数据库确实更新了
  5. 重复 2 号
  6. 重复 3 号
  7. 数据源已更新

我想要的是:

  1. 通过数据绑定到文本框将数据加载到列表框
  2. 单击我的列表框上的项目并从文本框中修改数据
  3. 单击更新按钮以更新数据库和数据源
  4. 数据源和数据库已更新

如何在我的应用程序中修复此错误?如果我需要更清楚,请告诉我..

4

1 回答 1

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();
于 2013-03-16T19:27:17.437 回答