Я выставляю счет на продажу и хочу, чтобы система проверила, является ли введенное количество двойным значением или нет, а если двойное значение, введенное количество должно быть меньше, чем количество в базе данных.
Проверка проверкиесли пользователь вводит double или no работает нормально, но другая часть кода не работает нормально. код работает после того, как пользователь покинул ячейку и ввел ее снова, и если он отредактировал ее, система продолжает сохранять старое значение (неверное значение) но для первой части он работает нормально, если он вводит буквы, система выдает ему ошибку, а когда он исправляет ее, система принимает новое значение и позволяет ему нормально уйти с продажи, проблема во второй части, вот моякод:
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == 3 || e.ColumnIndex == 4 || e.ColumnIndex == 5 || e.ColumnIndex == 6 || e.ColumnIndex == 7) // 1 should be your column index
{
if (Convert.ToString(e.FormattedValue) != "")
{
double i;
if (!double.TryParse(Convert.ToString(e.FormattedValue), out i))
{
e.Cancel = true;
MessageBox.Show("Insert correct numbers");
}
else
{
if (e.ColumnIndex == 5)
{
qty3 = Convert.ToDouble(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[5].Value);
string code = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[0].Value.ToString();
sqlClass c = new sqlClass();
con = c.getcon();
con.Open();
c.command("select quantity from items where code='" + code + "'");
cmd = c.getcmd();
double qty2 = Convert.ToDouble(cmd.ExecuteScalar().ToString());
if (qty3 > qty2)
{
e.Cancel = true;
MessageBox.Show("You don't have enough quantity \n Quantity available is:" + qty2);
}
else
{
dataGridView1[e.ColumnIndex, e.RowIndex].ErrorText = null;
}
con.Close();
}
}
}
}
}