首次单击时不更新ListBox数据源

时间:2013-03-16 10:06:17

标签: c# winforms ms-access listbox datasource

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

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. 数据源不是第一次更新,但数据库确实更新
  6. 重复2号。
  7. 重复3号。
  8. 数据源已更新
  9. 我想要的是什么:

    1. 使用数据绑定到文本框
    2. 将数据加载到列表框
    3. 点击我的列表框中的项目并修改文本框中的数据
    4. 单击“更新”按钮以更新数据库和数据源
    5. 数据源和数据库已更新
    6. 如何在我的应用程序上修复此错误?如果我需要更清楚,请告诉我。

1 个答案:

答案 0 :(得分: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();