1

ms-accessデータベースからデータをロードします。更新ボタンをクリックしたときにlistbox更新または更新するだけです。listbox datasource次に、これは私がメソッドに使用するコードであり、 DataLoadListBox()onを呼び出し、.form_load eventを更新しbutton_click eventます。

private BindingList<mylist> myList = new BindingList<mylist>();

private void DataLoadListBox()
{
    string query = "select * from myItem order by itemname";
    OleDbDataAdapter cmd = new OleDbDataAdapter(query, Conn());
    DataSet dt = new DataSet();
    cmd.Fill(dt, "myItem");
    DataTable datTable = dt.Tables[0];
    foreach (DataRow dtRow in datTable.Rows)
    {
        myList.Add(new mylist() { id = dtRow["ID"].ToString(), itemname = dtRow["itemname"].ToString() });
    }
    mylb.DisplayMember = "itemname";
    mylb.DataSource = myList;
    mylb.ValueMember = "id";
    Conn().Close();
}

次に、テキストが必要なもので埋められたら、以下のようにコーディングされtextboxた更新イベントをプッシュしましたbutton_click

OleDbCommand comm = new OleDbCommand("update myItem set itemname = @itemname where ID = @ID", Conn());
comm.Parameters.AddWithValue("@itemname", itemname.Text);
comm.Parameters.AddWithValue("@ID", itemid.Text));
comm.ExecuteNonQuery();
// start updating the listbox
myList.Clear();
mylb.DataSource = null;
mylb.Items.Clear();
mylb.Refresh();
mylb.Update();
mylb.DataSource = myList;
DataLoadListBox();
// none of above working, the listbox datasource not getting update

問題は、listbox datasource更新されないことです。ここで何が間違っているのでしょうか。これを機能させるにはどうすればよいですか?

4

1 に答える 1

0

DataLoadListBox で接続を閉じているようです。button_click で開いていますか、それともそのコードに到達したときに少なくとも開いていますか?

ここで最低限の例外処理が不足していない場合。ExecuteNonQuery が例外をスローしている場合、現時点では単純に無視しています。

于 2013-03-20T17:24:27.073 に答える