Как справиться с тем, чтобы индекс оказался вне зоны действия?
Каждый раз, когда я нажимал на название заголовка, этот индекс выходил за пределы диапазона. Я все еще новичок
Что я уже пробовал:
try { string colNamee = dataGridView2.Columns[e.RowIndex].Name; if (colNamee == "Edit") { FrmAddProduct frmadd = new FrmAddProduct(this); frmadd.btnSave.Enabled = false; frmadd.btnUpdate.Enabled = true; frmadd.txtID.Text = dataGridView2.Rows[e.RowIndex].Cells[0].Value.ToString(); frmadd.txtDescriprion.Text = dataGridView2.Rows[e.RowIndex].Cells[1].Value.ToString(); frmadd.txtPrice.Text = dataGridView2.Rows[e.RowIndex].Cells[4].Value.ToString(); frmadd.txtQty.Text = dataGridView2.Rows[e.RowIndex].Cells[5].Value.ToString(); frmadd.cboBrand.Text = dataGridView2.Rows[e.RowIndex].Cells[2].Value.ToString(); frmadd.cboCategory.Text = dataGridView2.Rows[e.RowIndex].Cells[3].Value.ToString(); frmadd.ShowDialog(); RefreshProduct(); } else if (colNamee == "Delete") { if (MessageBox.Show("Are you sure you want to delete this product record?", "Delete Record", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { con.Open(); cmd = new MySqlCommand("Delete from tblProduct where Pcode ='" + dataGridView2.Rows[e.RowIndex].Cells[0].Value.ToString() + "'", con); cmd.ExecuteNonQuery(); con.Close(); RefreshProduct(); } } } catch (Exception ex) { MessageBox.Show(ex.Message); }
Maciej Los
Отладьте программу, чтобы узнать, какое значение передается e.RowIndex при нажатии на заголовок столбца ;)
F-ES Sitecore
В вашем коде есть около 20 строк, которые могут вызвать эту ошибку. Когда у вас есть ошибка, всегда говорите, на какой линии она происходит.
Richard Deeming
cmd = new MySqlCommand("Delete from tblProduct where Pcode ='" + dataGridView2.Rows[e.RowIndex].Cells[0].Value.ToString() + "'", con);
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]