none
C# DATAGRIDVIEW NÃO FUNCIONA (HELPPPPPPPPPPP) RRS feed

  • Pergunta

  • Consigo inserir os dados porém não aparecem no DatagridView

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace GCE_FINAL
    {
        public partial class MenuGestor : Form
        {
            //declarar Lista - Coleção dados de objetos da classe ClassProdutos
            List<ClassContactos> listaTableContactos = new List<ClassContactos>();
    
            bool gridSel = false;
    
            public MenuGestor()
            {
                InitializeComponent();
            }
    
            private void MenuGestor_Load(object sender, EventArgs e)
            {
    
                
            }
    
            void Novo()
            {
                textBoxNome.Clear();
                textBoxTelemovel.Clear();
                textBoxEmail.Clear();
                textBoxNIF.Clear();
    
                buttonInserir.Enabled = true;
    
                buttonEliminar.Enabled = false;
    
                textBoxNome.Focus();
            }
    
            private void buttonNovo_Click(object sender, EventArgs e)
            {
                Novo();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                gridSel = false;
    
                if (textBoxNome.Text == "" || textBoxEmail.Text == "" || textBoxTelemovel.Text == "" || textBoxNIF.Text == "")
                {
                    MessageBox.Show("Deve introduzir todos os dados!",
                    "Gestao Contactos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return; //aborta>
                }
    
    
                //
                //Verificar se a Código já existe na BD
                //
                //
                //1. Abrir BD
                string strConn; //parametros de ligação
                                //app.config | Properties | Settings
                strConn = Properties.Settings.Default.ContactosConexaoString;
                //Definir a concexao à BD
                SqlConnection Conexao;//BD SQL
                Conexao = new SqlConnection(strConn);
                //Abrir DB
                try
                {
                    Conexao.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro: " + ex.ToString(), "Gestao Contactos",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                //
                //2. Criar o comando SQL SELECT a submeter à base de dados
                //
                SqlCommand comando = new SqlCommand();
                SqlDataReader datareader;
                string comandoSQL;
                comandoSQL = "SELECT * FROM TableContactos WHERE Telemovel = @campoTelemovel";
                comando = new SqlCommand(comandoSQL, Conexao);
                comando.Parameters.AddWithValue("campoTelemovel", textBoxTelemovel.Text);
                datareader = comando.ExecuteReader(); 
                //submete o comando SQL e guardar o resultado
                                                      
                //verificar se retornou alguma linha
                if (datareader.HasRows)
                {
                    //já xiste o numero na BD
                    MessageBox.Show("Contacto já existe!",
                    "Gestao Contactos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    datareader.Close();
                    //não existe produtos
                    //podemos inserir
                    comandoSQL = "INSERT INTO TableContactos (Nome, Email, Telemovel, NIF) " +
                    "VALUES (@campoNome, @campoEmail, @campoTelemovel, @campoNIF)";
                    comando = new SqlCommand(comandoSQL, Conexao);
                    comando.Parameters.AddWithValue("campoNome", textBoxNome.Text);
                    comando.Parameters.AddWithValue("campoEmail", textBoxEmail.Text);
                    comando.Parameters.AddWithValue("campoTelemovel", textBoxTelemovel.Text);
                    comando.Parameters.AddWithValue("campoNIF", textBoxNIF.Text);
    
                    //submeter o comando à bd
                    comando.ExecuteNonQuery();
                    Conexao.Close();
                    MessageBox.Show("Contacto inserido com sucesso!",
                    "Gestao Contactos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
    
    
            }
    
            private void label1_Click(object sender, EventArgs e)
            {
    
            }
    
            private void label1_Click_1(object sender, EventArgs e)
            {
    
            }
    
            private void textBox2_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void buttonAlterar_Click(object sender, EventArgs e)
            {
    
                gridSel = false;
    
                //Verificar se os textboxs tem valores
                if (textBoxNome.Text == "" || textBoxEmail.Text == "" || textBoxTelemovel.Text == "" || textBoxNIF.Text == "")
                {
                    MessageBox.Show("Deve introduzir todos os dados!",
                    "Gestao Produtos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return; //aborta
                }
                //
                //1. Abrir BD
                string strConn; //parametros de ligação
                strConn = Properties.Settings.Default.ContactosConexaoString;
                //Definir a concexao à BD
                SqlConnection Conexao;//BD SQL
                Conexao = new SqlConnection(strConn);
                //Abrir DB
                try
                {
                    Conexao.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro: " + ex.ToString(), "Gestao Contactos",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
    
                SqlCommand comando = new SqlCommand();
                string comandoSQL;
                comandoSQL = "UPDATE TableContactos " +
                "SET Nome = @campoNome, " +
                "Email = @campoEmail, " +
                "NIF = @campoNIF " +
                "WHERE Telemovel = @campoTelemovel;";
                comando = new SqlCommand(comandoSQL, Conexao);
                comando.Parameters.AddWithValue("campoNome", textBoxNome.Text);
                comando.Parameters.AddWithValue("campoEmail", textBoxEmail.Text);
                comando.Parameters.AddWithValue("campoTelemovel", textBoxTelemovel.Text);
                comando.Parameters.AddWithValue("campoNIF", textBoxNIF.Text);
                //submeter o comando à bd
                int rowsAffected = comando.ExecuteNonQuery();
                Conexao.Close();
                if (rowsAffected > 0)
                    MessageBox.Show("Contacto alterado com sucesso!",
                    "Gestao Contactos", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
    
            private void buttonEliminar_Click(object sender, EventArgs e)
            {
                gridSel = false;
    
                //Verificar se os textboxs tem valores
                if (textBoxNome.Text == "" || textBoxEmail.Text == "" || textBoxTelemovel.Text == "" || textBoxNIF.Text == "")
                {
                    MessageBox.Show("Deve introduzir todos os dados!",
                    "Gestao Contactos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return; //aborta
                }
                //
                //1. Abrir BD
                string strConn; //parametros de ligação
                strConn = Properties.Settings.Default.ContactosConexaoString;
                //Definir a concexao à BD
                SqlConnection Conexao;//BD SQL
                Conexao = new SqlConnection(strConn);
                //Abrir DB
                try
                {
                    Conexao.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro: " + ex.ToString(), "Gestao Contactos",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                SqlCommand comando = new SqlCommand();
                string comandoSQL;
                comandoSQL = "DELETE FROM TableContactos WHERE Telemovel = @campoTelemovel";
                comando = new SqlCommand(comandoSQL, Conexao);
                comando.Parameters.AddWithValue("campoTelemovel", textBoxTelemovel.Text);
                //submeter o comando à bd
                comando.ExecuteNonQuery();
                Conexao.Close();
                CriaColecaoDados();
                Novo();
                MessageBox.Show("Conatacto eliminado com sucesso!",
                "Gestao Contactos", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
    
            void CriaColecaoDados()
            {
                //
                //1. Abrir BD
                string strConn; //parametros de ligação
                strConn = Properties.Settings.Default.ContactosConexaoString;
                //Definir a concexao à BD
                SqlConnection Conexao;//BD SQL
                Conexao = new SqlConnection(strConn);
                //Abrir DB
                try
                {
                    Conexao.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro: " + ex.ToString(), "Gestao Contactos",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                }
                //
                //2. Criar o comando SQL SELECT a submeter à base de dados
                //
                SqlCommand comando = new SqlCommand();
                SqlDataReader datareader;
                string comandoSQL;
                comandoSQL = "SELECT* FROM TableContactos";
                comando = new SqlCommand(comandoSQL, Conexao);
                datareader = comando.ExecuteReader(); //submete o comando SQL e guardar o resultadoPágina 14 de 25
                listaTableContactos.Clear();
                while (datareader.Read())
                {
                    ClassContactos objProduto = new ClassContactos();
                    objProduto.Nome = datareader["Nome"].ToString();
                    objProduto.Email = datareader["Email"].ToString();
                    objProduto.Telemovel = int.Parse(datareader["Telemovel"].ToString());
                    objProduto.NIF = int.Parse(datareader["NIF"].ToString());
    
                    listaTableContactos.Add(objProduto);
                }
    
                PreencheGrid();
            }
    
            void PreencheGrid()
            {
    
                int linha = 0;
                foreach (ClassContactos Registo in listaTableContactos)
                {
                    dataGridViewDados.Rows.Add();
                    dataGridViewDados.Rows[linha].Cells[0].Value = Registo.Nome;
                    dataGridViewDados.Rows[linha].Cells[1].Value = Registo.Telemovel;
                    dataGridViewDados.Rows[linha].Cells[2].Value = Registo.Email;
                    dataGridViewDados.Rows[linha].Cells[3].Value = Registo.NIF;
                    linha++;
                }
            }
    
            private void dataGridViewDados_Enter(object sender, EventArgs e)
            {
                gridSel = true;
            }
    
            private void dataGridViewDados_SelectionChanged(object sender, EventArgs e)
            {
                try
                {
                    if (gridSel == true && dataGridViewDados.CurrentRow != null)
                    {
                        int rowIndex = dataGridViewDados.CurrentRow.Index;
                        dataGridViewDados.Rows[rowIndex].Selected = true;
                        DataGridViewRow row = dataGridViewDados.Rows[rowIndex];
                        if (row != null)
                        {
                            textBoxNome.Text = row.Cells[0].Value.ToString();
                            textBoxTelemovel.Text = row.Cells[1].Value.ToString();
                            textBoxEmail.Text = row.Cells[2].Value.ToString();
                            textBoxNIF.Text = row.Cells[3].Value.ToString();
                            buttonAlterar.Enabled = true;
                            buttonEliminar.Enabled = true;
                        }
                    }
                }
                catch (Exception)
                {
                    return; //aborta
                }
            }
    
            private void textBoxNome_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void textBox2_TextChanged_1(object sender, EventArgs e)
            {
    
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void dataGridViewDados_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
    
            }
        }
    }
    


    segunda-feira, 27 de maio de 2019 13:19

Todas as Respostas

  • Amigo,

    se entendi sua duvida, você consegue inserir o registro no banco dados, mas não atualiza no datagrid?
    caso seja isso, é necessário que após a inclusão do registro você chame seu metodo novamente responsável por popular o datagrid e depois chame a propriedade databind do datagrid para atualizar na tela!
    ficaria algo tipo:
    -> sua inclusão
    -> seu select
    -> datagrid.databind()
    Caso não seja isso, poderia postar o erro?

    segunda-feira, 27 de maio de 2019 19:20
  • Olá, Thiago! 

    Pelo que entendi você tem o método PreencheGrid(), responsável por preencher o DataGrid, certo? Esse método é chamado por CriaColecaoDados(), que por sua vez é chamado pelo click no botão Eliminar!

    No caso, você deseja preencher o DataGrid quando o usuário clica no botão? Ou quer que ele já venha preenchido?


    “First do it, then do it right, then do it better.”

    segunda-feira, 27 de maio de 2019 19:39