избегать дублирования в datagridview - PullRequest
0 голосов
/ 03 мая 2018

Я попытался проверить похожий пост об этом, но не нашел правильного решения, у меня есть следующий код

    if(dgvOC.Rows.Count == 0)
    {
        dgvOC.Rows.Add(txtProd.Text, numCant.Value, txtTipo.Text, precioGuardado, precioGuardado * (int)numCant.Value);
    }
    for (int i = 0; i <= dgvOC.Rows.Count; i++)
    {
        if (txtProd.Text == dgvOC.Rows[i].Cells[0].Value.ToString())
        {
            MessageBox.Show("Usted ya ha agregado un producto con el mismo nombre" +
            ", modifique la cantidad o borre el producto para agregarlo" +
            " de nuevo.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            txtProd.Clear();
            txtTipo.Clear();
            numCant.Value = 0;
            return;
        }
        dgvOC.Rows.Add(txtProd.Text, numCant.Value, txtTipo.Text, precioGuardado, precioGuardado * (int)numCant.Value);
    }

Первый Если в начале, мне не нужно сравнивать его ни с чем, потому что сравнивать его не с чем, поэтому я просто добавляю его (мой DGV имеет свойство "AddingRows" для false)

Я использую for для запуска на всех DGV, затем во 2-м. Если я хотел бы сравнить текстовое поле с каждой строкой в ​​DGV, и, если оно совпадает, появится MessageBox, сообщив, что вы ' мы добавили продукт с тем же именем, затем он очищает некоторые текстовые поля и числовое значение вниз, затем возвращается и, если он не соответствует строке, добавляет

... моя проблема в том, что при использовании этого кода первая вставка в DGV работает нормально, но во второй она отображает предупреждение (даже если я добавляю имя, не совпадающее с продуктом), а в третьей один добавляет строку пустым

Спасибо за помощь

1 Ответ

0 голосов
/ 03 мая 2018

Попробуйте что-то вроде этого Создайте метод для проверки содержимого datagridview и наличия строк в нем.

       // Call this in your event.
     If(NoRowOrNoDuplicate())
   {   
    dgvOC.Rows.Add(txtProd.Text, numCant.Value, txtTipo.Text, precioGuardado, precioGuardado * (int)numCant.Value);
       }


  //The method be like
    private bool NoRowOrNoDuplicate()
            {
             // Add condition s here
           for (int i = 0; i <= dgvOC.Rows.Count; i++)
             {
                    if (txtProd.Text == dgvOC.Rows[i].Cells[0].Value.ToString())
                      {
        MessageBox.Show("Usted ya ha agregado un producto con el mismo nombre" +
        ", modifique la cantidad o borre el producto para agregarlo" +
        " de nuevo.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                   txtProd.Clear();
                   txtTipo.Clear();
                   numCant.Value = 0;
                   return false;
                    }
                   }
            Return true;
             }
...