Если условие пропускается
У меня есть цикл foreach для winforms datagridview, который размещен внутри wpf usercontrol. Цикл foreach пропускает первое условие автоматически объявляет его нулевым, а затем выполняется правильно для каждой последующей строки. Условие if истинно.
foreach (DataGridViewRow item in Dashboard_dataGrid.Rows) { //--[0] is the index of the checkbox Column on the Datagridview if (Convert.ToBoolean(item.Cells[0].Value) == true) //if switched to false it works or add true) continue; { MessageBox.Show("Selected Rows :" + item.Cells[0].RowIndex.ToString()); //just to show where I am at in the index sqlCon.Open(); SqlDataAdapter abc = new SqlDataAdapter("Delete from tbl_ClientProducts Where productID = '" + item.Cells[11].Value.ToString() + "' and userID = '" + UtilityClass.userID + "'", sqlCon); DataTable dtbl = new DataTable(); abc.Fill(dtbl); Dashboard_dataGrid.Update(); //did not work Dashboard_dataGrid.Refresh(); // did not work sqlCon.Close(); } } MessageBox.Show("Your product(s) have been deleted Successfully");
}
Что я уже пробовал:
Я изменил условие на false, которое он оценивает, говоря, что есть нулевое значение, но оно не равно нулю .Сеть установила ячейку в ноль
if (Convert.ToBoolean(item.Cells[0].Value) == false)
Richard Deeming
"Delete from tbl_ClientProducts Where productID = '" + item.Cells[11].Value.ToString() + "' and userID = '" + UtilityClass.userID + "'"
Не делай этого так!
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
SqlDataAdapter abc = new SqlDataAdapter("Delete from tbl_ClientProducts Where productID = @productID and userID = @userID", sqlCon); abc.SelectCommand.Parameters.Add("@productID", item.Cells[11].Value); abc.SelectCommand.Parameters.Add("@userID, UtilityClass.userID);
Member 12349597
Sql-инъекция будет рассмотрена позже, это просто для того, чтобы заставить ее работать так, как я хочу, прежде чем перейти к фазе безопасности приложения. Итак, теперь идея о состоянии if?
Maciej Los
Вы должны разработать приложение, обращая внимание на безопасность. Вы не можете "улучшить" приложение позже (как вы заявили в разделе "фаза безопасности)", по многим причинам.
Member 12349597
Ваш убивает меня малявка вопрос если условие пропускается. Ваша теория приложений безопасности была рассмотрена. Есть ли у вас какая-либо информация, которая может быть полезна для пропущенного условия if?.. Если нет, то спасибо, но в данный момент я не имею дела с безопасностью.
F-ES Sitecore
Я действительно не понимаю этого вопроса, но проблема, вероятно, заключается в том, что вы пытаетесь изменить источник данных чего-то во время итерации. Возможно, проблема заключается в том, что foreach повторяет старые данные, и вы ожидаете, что он будет повторять обновленные данные.
Member 12349597
Я не думаю, что это так, потому что он правильно работает для строк добавления, так что, например, если у меня есть 5 строк, цикл foreach будет работать для 4 и пропускать последнюю строку. Если у меня есть только одна строка, она пропустит строку, и ничего не произойдет. Но я посмотрю, может ли быть что - то в этом роде для этого одного ряда. Спасибо