0

ms access データベースからリストボックスにデータをロードする winform プログラムを作成します。リストボックスのデータベースとデータソースで更新したいアイテムをクリックして更新ボタンをクリックすると、最初にクリックしたアイテムは更新されませんが、2回目は(同じアイテムで)更新されるため、毎回変更する必要がありますmy data 項目を選択して更新ボタンを 2 回クリックする必要があります。それはクレイジーです笑..

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. No.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 に答える