В WPF DataGrid элемент управления свойство selecteditems, когда кнопку нажали обновления всех выбранных строк столбца userallocated с значение из комбобокса
Я работаю над небольшим проектом для себя, чтобы попытаться научиться программированию, но у меня возникли некоторые проблемы с некоторыми вещами.
У меня есть DataGrid, который заполняется данными с моего SQL-сервера, и то, что я пытаюсь сделать, - это если выбрана строка и выбрано значение combobox, а затем нажата кнопка Применить, то она должна обновить столбец UserAllocated.
Я могу обновлять одну строку за раз, но не все сразу.
Я попытался установить SelectionMode в "Расширенный" а также SelectionUnit to "Фуллроу" Я попытался найти похожую ситуацию, но безуспешно.
Что я уже пробовал:
Вот что у меня есть до сих пор, чтобы обновить одну строку, если она выбрана. (Я не беспокоюсь о безопасности на данный момент, так как это личный проект и буду использовать его только я.)
Поэтому мне нужно, чтобы все выбранные строки обновлялись значением, выбранным в выпадающем списке после нажатия кнопки Обновить.
private void btnUpdate_Click(object sender, RoutedEventArgs e) { IList items = jobstbl.SelectedItems; foreach (object item in items) { conn.Open(); cmd = new SqlCommand("UPDATE tblJobs SET UserAllocated='" + UserAllocated.Text + "' WHERE ID='" + JobID + "'", conn); cmd.ExecuteNonQuery(); MessageBox.Show("User Assigned!"); conn.Close(); displayData(); logAllocatedUser(); Clear(); } }
Richard Deeming
cmd = new SqlCommand("UPDATE tblJobs SET UserAllocated='" + UserAllocated.Text + "' WHERE ID='" + JobID + "'", conn);
Не делай этого так!
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
using (var cmd = new SqlCommand("UPDATE tblJobs SET UserAllocated = @UserAllocated WHERE ID = @JobID", conn)) { cmd.Parameters.AddWithValue("@UserAllocated", UserAllocated.Text); cmd.Parameters.AddWithValue("@JobID", JobID); cmd.ExecuteNonQuery(); }
Member 12876243
Привет, я знаю о SQL-инъекции. Спасибо