データベース から、およびDelete Record
というコールを受け取るリストボックスから、選択したレコードを削除するために呼び出す関数を作成しました。C#ListBox:DataSourceプロパティが設定されているときにItemsコレクションを変更することはできません。
機能:
void DeleteListBox2()
{
string connstring = String.Format("Server=localhost;Port=***;" +
"User Id=****;Password=****;Database=****;");
NpgsqlConnection conn = new NpgsqlConnection(connstring);
conn.Open();
for (int i = 0; i < listBox2.SelectedItems.Count; i++)
{
var itemname = listBox2.SelectedValue;
NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM Table WHERE Value = '" + itemname + "'", conn);
cmd.ExecuteNonQuery();
MessageBox.Show("Selected record deleted from database");
listBox2.Items.Remove(listBox2.SelectedItems[i]); //ERROR LINE
listBox2.Update();
}
conn.Close();
}
ERROR:DataSourceプロパティが設定されている場合
Itemsコレクションを変更することはできません。
DataSourceに関連付けられている基本オブジェクトから項目を削除する必要があります。 – Steve
または、リストボックスの項目に値を設定する方法を変更することができます。あなたのデータセットを繰り返して、リストボックスにintemを挿入してください。そうすれば、リストボックスから特定の項目を削除することができます。 – Nino
ところで、あなたはデータベースに接続する方法に注意してください!例外がある場合、接続は閉じられません。使用ブロックを使用します。また、コマンドパラメータを使用するか、アプリがSQLインジェクションに脆弱になります。 – Zesty