Я создал следующую функцию, чтобы вызвать удаление выбранной записи из базы данных , а также из списка, который получит звонок по кнопке Delete Record
.C# ListBox: коллекция элементов не может быть изменена, когда установлено свойство DataSource
Функция:
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();
}
ОШИБКА:
Элементы коллекции не могут быть изменены, когда свойство DataSource установлено.
Вы должны удалить элементы из базового объекта, связанного с источником данных. – Steve
или вы можете изменить способ заполнения элементов списка. Перейдите по вашему набору данных и вставьте intems в список. Таким образом вы сможете удалить определенный элемент из списка. – Nino
Кстати, будьте осторожны с тем, как вы подключаетесь к базе данных! Если у вас есть исключение, соединение не будет закрыто. Используйте блок использования. Кроме того, используйте параметры команды, или ваше приложение будет уязвимым для SQL-инъекции. – Zesty