Приращение количества не работает с буквами только с числами
Some help In line 10 setup IsLetterOrDigit.. When add some value in datagrid Line 34-39 have problem... Every time add new row, if put number it ok kolicina (quantity go up +1), if is bar code type vm1403 add new row...not kolicina (quantity) +1...why? Some help? int cqty = Convert.ToInt32(row.Cells["kolicina"].Value) + 1; if (textBox1.Text == row.Cells["bar_kod"].Value.ToString()) { row.Cells["kolicina"].Value = cqty;
Что я уже пробовал:
private void prijavaAction() { PullData(); int sno = dataGridView1.Rows.Count + 1; SqlConnection con2 = new SqlConnection(con); if (textBox1.Text.All(char.IsLetterOrDigit)) { string queryString = "select [bar_kod], [naziv], [cijena_sa_porezom] from dbo.roba_usluge WHERE [bar_kod] = '" + textBox1.Text + "'";// pronaci artikl u bazi using (SqlConnection connection = new SqlConnection(con)) { SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); /////////////////////////////////////////// here is error var itemAndPrice = textBox1.Text; var SingleRow = (from Rows in dataGridView1.Rows.Cast<DataGridViewRow>() where !Rows.IsNewRow && Rows.Cells["bar_kod"].Value.ToString().ToUpper() == textBox1.Text.ToUpper() select Rows).FirstOrDefault(); if (reader.Read()) { bool barcodeexist = false; foreach (DataGridViewRow row in dataGridView1.Rows) { int cqty = Convert.ToInt32(row.Cells["kolicina"].Value) + 1; if (textBox1.Text == row.Cells["bar_kod"].Value.ToString()) { row.Cells["kolicina"].Value = cqty; /////////////////////////////////////////// foreach (DataGridViewRow g1 in dataGridView1.Rows) { g1.Cells["ukupno"].Value = (Convert.ToDouble(g1.Cells["kolicina"].Value) * Convert.ToDouble(g1.Cells["cijena"].Value)).ToString("0.00"); }
Richard MacCutchan
Ваш призыв к char.IsLetterOrDigit
не соответствует документации (Обуглить.Метод IsLetterOrDigit (Система) | Microsoft Docs[^]). На самом деле этот код даже не должен компилироваться.
Goran Bibic
Что выбрать? Когда есть ситуация:
bar_code 123456 IsDigit (это нормально и работает quatity + 1)
bar_code VM123456 IsLetterOrDigit (это добавление новой строки с тем же элементом и качеством 1)
Какие-то рекомендации?
Richard MacCutchan
Вам нужно правильно проанализировать свои данные. Отделите цифры от букв, увеличьте число, а затем воссоздайте строку для следующего раза. Бесполезно пытаться угадать, как выглядят ваши данные, вам нужно учитывать каждую комбинацию букв и цифр, которые могут быть представлены.
Richard MacCutchan
Ваш призыв к char.IsLetterOrDigit
всегда возвращает True, если данные содержат все буквы или цифры. Поэтому вам нужен другой метод определения точного формата строки.