Ir ao conteúdo

Duvida no preenchimento de grid (C#)


bartsimpson

Posts recomendados

Postado

Olá galera, estou fazendo meu primeiro sistema em C# usando o grid, e gostaria de fazer, como faço pra quando o cadastramento for feito, o sistema atualizar automaticamente no grid o registro que foi inserido, a tela é um sistema de cadastro de palavras em inglês, com a tradução da palavra em portugues, segue abaixo o código da função para cadastrar a palavra:

void cadastrarPalavra() // Método para cadastrar um nova palavra no banco

{

if (optIngles.Checked == true) // Se a opção de cadastrar palavras em Inglês estiver selecionada

{

tipo = 1;

if (objPalavras.cadastrarPalavra(tipo, txtPalavra.Text, txtTraducao.Text))

{

MessageBox.Show("Palavra cadastrada com sucesso!", "OK", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

limparCampos();

}

else

{

MessageBox.Show("Palavra já cadastrada!");

}

}

else // Se for palavra em Português

{

tipo = 2;

if (objPalavras.cadastrarPalavra(tipo, txtPalavra.Text, txtTraducao.Text))

{

MessageBox.Show("Palavra cadastrada com sucesso!", "OK", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

limparCampos();

}

else

{

MessageBox.Show("Palavra já cadastrada!");

}

}

}

A função chamada pelo objeto é a função cadastrarPalavra(int tipo, string palavra, string traducao), segue o código:

public Boolean cadastrarPalavra(int tipo, string palavra, string traducao) // Método para o cadastramento de uma nova palavra

{

string retorno = "";

objBanco.conectarBanco();

SqlCommand cadastrarPalavra = new SqlCommand("EXEC sp_palavras_i " + tipo + ",'" + palavra + "','" + traducao + "'", Banco.conexao);

SqlDataReader leitor = cadastrarPalavra.ExecuteReader();

if (leitor.Read())

{

retorno = leitor[""].ToString();

}

leitor.Close();

if (retorno == "0")

{

return true;

}

else

{

return false;

}

}

Quando clico no botão cadastrar, ele cadastra corretamente no banco, porém não é inserido nada no grid, tenho uma função para o preenchimento do grid, que é a seguinte:

public void preencheGrid() // Método para preencher o grid com as palavras cadastradas no banco de dados

{

SqlCommand comand = new SqlCommand();

comand.Connection = Banco.conexao;

comand.CommandText = "SELECT * FROM v_palavras";

SqlDataAdapter adapter = new SqlDataAdapter();

adapter.SelectCommand = comand;

adapter.Fill(dtsPalavras, "v_palavras");

this.dgvPalavras.DataSource = dtsPalavras.Tables["v_palavras"];

}

Por favor, se alguem puder me ajudar, agradeço muito!

Obrigado,

Bart.

Postado

cara coloca logo abaixo dessa linha aqui:

this.dgvPalavras.DataSource = dtsPalavras.Tables["v_palavras"];

Isso aqui:

this.dgvPalavras.DataBind();

Ai ele vai preencher o gridview.

Posta o resultado.

Postado

Cara realmente voce não ia achar o metodo DataBind() ,pois isso é do gridview,ou seja,para projeto web.

E o seu é o datagridview para windows forms.

Mas dei uma olhada no seu codigo e aparenta ta tudo certo.

Vou deixar esse codigo de exemplo que eu fiz:


[COLOR=#2b91af][COLOR=#2b91af]DataSet[/COLOR][/COLOR] ds = [COLOR=#0000ff][COLOR=#0000ff]new [/COLOR][/COLOR][COLOR=#2b91af][COLOR=#2b91af]DataSet[/COLOR][/COLOR]();
[COLOR=#2b91af][COLOR=#2b91af]SqlCommand[/COLOR][/COLOR] cmd = [COLOR=#0000ff][COLOR=#0000ff]new [/COLOR][/COLOR][COLOR=#2b91af][COLOR=#2b91af]SqlCommand[/COLOR][/COLOR]();
cmd.Connection = [COLOR=#0000ff][COLOR=#0000ff]new [/COLOR][/COLOR][COLOR=#2b91af][COLOR=#2b91af]SqlConnection[/COLOR][/COLOR]([COLOR=#a31515][COLOR=#a31515]@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Forum.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"[/COLOR][/COLOR]);
cmd.CommandText = [COLOR=#a31515][COLOR=#a31515]"Select * from Users"[/COLOR][/COLOR];
[COLOR=#2b91af][COLOR=#2b91af]SqlDataAdapter[/COLOR][/COLOR] da = [COLOR=#0000ff][COLOR=#0000ff]new [/COLOR][/COLOR][COLOR=#2b91af][COLOR=#2b91af]SqlDataAdapter[/COLOR][/COLOR]();
da.SelectCommand=cmd;
da.Fill(ds,[COLOR=#a31515][COLOR=#a31515]"Users"[/COLOR][/COLOR]);
[COLOR=#0000ff][COLOR=#0000ff]this[/COLOR][/COLOR].dataGridView1.DataSource = ds.Tables[[COLOR=#a31515][COLOR=#a31515]"Users"[/COLOR][/COLOR]];

Olhe se você nao esqueceu de chamar o metodo preencheGrid(),ou se não tem nada de errado nessa parte aqui que é o que acho mais provavel:


Banco.conexao;

Pois pelo o que voce postou não da para saber o que tem nele.

Postado

Quando eu chamo novamente o metodo preencheGrid(), ele preenche novamente o grid, porém nao limpa os anteriores...

Exemplo:

Tenhos as palavras Livro e Escola no grid... ao inserir a palavra Regua, quando cadastro, ele joga no grid, porém nao apaga, ficando:

Livro

Escola

Livro

Escola

Regua

Como posso fazer pra apagar todo o grid antes de preenche-lo novamente? Seria isso que esta faltando?

Obrigado.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!