none
Não deixar preencher mesmo valor em colunas DataGridView RRS feed

  • Pergunta

  • Estou desenvolvendo um sistema onde a única coluna  Editável será a Ramal, conforme imagem.

    Como fazer para que ao momento que eu digitar um valor ele avise que não pode ser o mesmo número? E também que mostre qual código está sendo usado o número em questão?


    quarta-feira, 21 de outubro de 2020 19:39

Respostas

  • Aqui tem um artigo que pode te ajudar

    Exemplo 1

    Exemplo 2

    Exemplo 3
    • Editado Titodj7 segunda-feira, 26 de outubro de 2020 14:25
    • Marcado como Resposta Paulo Antunes de Souza quinta-feira, 29 de outubro de 2020 11:12
    segunda-feira, 26 de outubro de 2020 14:18
  • Consegui fazendo este método:

    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        string v = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
        foreach (DataGridViewRow row in this.dataGridView1.Rows)
        {
            if (row.Index >= this.dataGridView1.Rows.Count - 1) break;
            if (row.Cells[3].Value?.ToString() == v && row.Index != e.RowIndex)
            {
                MessageBox.Show("Opa, já existe um ramal igual a esse");
                this.dataGridView1[e.ColumnIndex, e.RowIndex].Value = null;
                break;
            }
        }
    }

    quinta-feira, 29 de outubro de 2020 11:11

Todas as Respostas

  • eu uso assim para verificar se algum nome existe antes de criar um novo

    
    //class Controller
    
    
    public static string Incluir(ModeloCliente cliente)
            {
                string Saida = "";
                DALConexao conexao = new DALConexao(DadosDaConexao.StringDaConexao);
                SqlCommand cmd = new SqlCommand();
                conexao.Conectar();
                cmd.CommandText = "insert into Clientes (nome, tipo, email)" +
                    " values (@Nome, @Tipo, @Email)";
                cmd.Parameters.AddWithValue("@nome", cliente.Nome);
                cmd.Parameters.AddWithValue("@tipo", cliente.Tipo);
                cmd.Parameters.AddWithValue("@email", cliente.Email);
    
                if (VerificarExistencia(cliente.Nome) == false)
                {
                    try
                    {
                        cliente.ID_Cli = Convert.ToInt32(cmd.ExecuteNonQuery());
                        conexao.Desconectar();
    
                        Saida = "Cliente registrada com sucesso!";
                    }
                    catch (Exception exc)
                    {
                        Saida = "Ocorreu um erro inesperado: " + exc.Message;
                    }
                    return Saida;
                }
                else
                {
                    //Se o a pessoa jurídica já for cadastrada caira nesse código como retorno e nada sera salvo.
                    Saida = "Cliente já cadastrada.";
                    return Saida;
                }
            }
    
    
    
    
    
    public static bool VerificarExistencia(string Nome)
            {
                DALConexao conexao = new DALConexao(DadosDaConexao.StringDaConexao);
                bool PessoaEncontrada = false;
    
                DataTable Tabela;
                SqlCommand cmd = new SqlCommand();
                Tabela = new DataTable("CVlientes");
                cmd.CommandText = "select * from Clienteswhere Nome = @nome";
                cmd.Parameters.AddWithValue("@nome", Nome);
                SqlDataReader dr;
    
                try
                {
                    cmd.Connection = conexao.ObjetConexao;
                    conexao.Conectar();
                    dr = cmd.ExecuteReader();
    
    
                    if (dr.HasRows)
                    {
                        PessoaEncontrada = true;
                    }
                }
                catch (Exception)
                {
    
                    PessoaEncontrada = false;
                }
                conexao.Desconectar();
                return PessoaEncontrada;
            }
    
    
    
    // form Frm_Clientes
    
    private void salvar()
            {
                if (!string.IsNullOrWhiteSpace(Txt_Nome.Text))
                {
    
                    string Saida = ControleCliente.Incluir(PreencherInformacoes());
    
                    MessageBox.Show(Saida, "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
    
                    LimparCampos();
                    AtualziarLsitaDeClientes();
                }
                else
                {
                    MessageBox.Show("Insira um nome!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
    
    
    
       private ModeloCliente PreencherInformacoes()
            {
                ModeloCliente PessoaBase = new ModeloCliente();
                PessoaBase.Nome = Txt_Nome.Text;
                PessoaBase.Email = Txt_Email.Text;
                PessoaBase.Tipo = Txt_Tipo.Text;
               
                PessoaBase.ID_Cli = IDCarregado;
    
                return PessoaBase;
            }
    
    
    private void btn_Salvar_Click(object sender, EventArgs e)
            {
                if (!ControleCliente.VerificarExistencia(Txt_Nome.Text))
    //Se ele não existir crie um novo, senão edite apenas
                {
                    salvar();
                }
                else
                {
                    editar();
                }
                AtualizarInformacoesDoGrid();
            }
    

    talvez ter ajude

    quarta-feira, 21 de outubro de 2020 23:26
  • Gostei nesse código. Obrigado, vou tentar com um projeto meu aqui
    quinta-feira, 22 de outubro de 2020 13:15
    Moderador
  • Aqui tem um artigo que pode te ajudar

    Exemplo 1

    Exemplo 2

    Exemplo 3
    • Editado Titodj7 segunda-feira, 26 de outubro de 2020 14:25
    • Marcado como Resposta Paulo Antunes de Souza quinta-feira, 29 de outubro de 2020 11:12
    segunda-feira, 26 de outubro de 2020 14:18
  • Grato!
    quinta-feira, 29 de outubro de 2020 11:11
  • Consegui fazendo este método:

    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        string v = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
        foreach (DataGridViewRow row in this.dataGridView1.Rows)
        {
            if (row.Index >= this.dataGridView1.Rows.Count - 1) break;
            if (row.Cells[3].Value?.ToString() == v && row.Index != e.RowIndex)
            {
                MessageBox.Show("Opa, já existe um ramal igual a esse");
                this.dataGridView1[e.ColumnIndex, e.RowIndex].Value = null;
                break;
            }
        }
    }

    quinta-feira, 29 de outubro de 2020 11:11