C# DataGrid não atualiza

28/11/2011

0

Olá amigos,
estou com o seguinte problema:

tenho um formulario de atividades recentes.. os botões adicionar,alterar e excluir estão funcionando corretamente
porém, após efetuar sua ação, o dataGrid não atualiza. É necessário fechar o programa e abrir novamente para atualizar

estou usando Visual Studio 2010 C# + SQL Server. Se alguém poder ajudar fico agradecido!

Também gostaria de saber se é possível ordenar o Form2 para atualizar o dataGrid do Form1, no caso de criar um formulario exclusivamente para adicionar itens...se possível, como faço isso?

segue abaixo meu código do botão alterar que não atualiza o dataGrid:

 private void button2_Click(object sender, EventArgs e)
        {
            {

                try{
                

                    if (tbtitulo.Text != )
                    {

                        SqlConnection conn = new SqlConnection(@Data Source=PHOENIX\SQLEXPRESS;Initial Catalog=Ortifa;Integrated Security=True;Pooling=False);
                        SqlCommand comm = new SqlCommand();
                        comm.Connection = conn;
                        comm.CommandText = UPDATE Lembre SET Titulo =  + tbtitulo.Text + , Data =  + tbdata.Text + , Hora =  + tbhora.Text + WHERE Titulo =  + (tbtitulo.Text) + ;
// UPDATE cadcd set TIPO=-DIVERSOS, TITULO=TESTE1, DESCRICAO=TESTE1 where REGISTRO=007
                        comm.Parameters.AddWithValue(@TITULO, tbtitulo.Text);
                        comm.Parameters.AddWithValue(@DATA, tbdata.Text);
                        comm.Parameters.AddWithValue(@HORA, tbhora.Text);
                        comm.Parameters.AddWithValue(@LOCAL, tblocal.Text);
                        conn.Open();
                        comm.ExecuteNonQuery();
                        conn.Close();
                        MessageBox.Show(Midia alterada com sucesso!);
                    }

                    else
                    {
                        MessageBox.Show(Informe o código da mídia);
                    }

                }

                catch
                {
                    MessageBox.Show(Erro na alteração do cadastro, Mensagem do Sistema,
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }

            }


Desde já agradeço pela atenção!
Dyego

Dyego

Responder

Posts

03/12/2011

Rodrigo Odasaki

Então na verdade DataGrid como coloquei de exemplo é o nome do Grid.
No caso você precisa substituir pelo seu.


Veja bem, você deve ter um método que é o Load do form certo?
Ou seja ao carregar será populado o seu Grid vindas da base do SQL.
Seu grid está ligado a algum DataSource.

Então no seu método incluir você precisa após a inclusão definir o DataSource do seu Grid como null e após isso setar o DataSource novamente.

Exemplo:

Grid.DataSource = null;
GridDataSource = AQUI você coloca seu DataSource;

Se você não conseguir posta o código do método Load do form que popula o seu Grid, assim vou poder ver e te mostrar.
Ou upa o projeto em algum site para download.


Responder

03/12/2011

Dyego

então amigo, meu código do botão excluir ficou assim:

private void button3_Click(object sender, EventArgs e)
{
string strcon = Data Source=PHOENIX\\SQLEXPRESS;Initial Catalog=Ortifa;Integrated Security=True;
string seltable = select * from Lembre;
string inserir = Delete From Lembre where Titulo = (+tbtitulo.Text+);
//and + tbdata.Text + )
SqlConnection conexao = new SqlConnection(strcon);
SqlDataAdapter da = new SqlDataAdapter(seltable, conexao);
DataSet ds = new DataSet();
SqlCommand cmdinsert = new SqlCommand(inserir, conexao);
conexao.Open();
cmdinsert.ExecuteNonQuery();
conexao.Close();
conexao.Open();
// GridLembre.DataSource = da.Fill(ds, seltable);

GridLembre.DataSource = null;
conexao.Close();
conexao.Open();
// da.Fill(ds);
this.lembreTableAdapter.Fill(this.ortifaDataSet.Lembre);

GridLembre.DataSource = seltable;

conexao.Close();

/* conexao.Open();
da.Fill(ds);
GridLembre.DataSource = lembreBindingSource2;

conexao.Close();

TableAdapter.Fill(DataSet.Tabela);
lembreTableAdapter.Fill(DataSet.lembre);
conexao.Close();
Form2 formu1 = new Form2();
this.Close();
Form2 formu2 = new Form2();
formu2.Show();
*/
tbtitulo.Text = ;





a linha this.lembreTableAdapter.Fill(this.ortifaDataSet.Lembre); é a única linha que está no meu Form_Load

ainda não está atualizando, mas aparece as linhas já, que antes não aparecia
se poder add msn: d5web@hotmail.com
Responder

03/12/2011

Dyego

Opa, pessoal
acabei de conseguir aqui...
creio que não seja da forma mais correta, mas pelo menos está atualizando
eu coloquei o dataset no datasource após a linha que popula o dataGrid entao ficou assim:

private void button3_Click(object sender, EventArgs e)
{
string strcon = Data Source=PHOENIX\\SQLEXPRESS;Initial Catalog=Ortifa;Integrated Security=True;
string seltable = select * from Lembre;
string inserir = Delete From Lembre where Titulo = (+tbtitulo.Text+);
//and + tbdata.Text + )
SqlConnection conexao = new SqlConnection(strcon);
SqlDataAdapter da = new SqlDataAdapter(seltable, conexao);
DataSet ds = new DataSet();
SqlCommand cmdinsert = new SqlCommand(inserir, conexao);
conexao.Open();
cmdinsert.ExecuteNonQuery();
conexao.Close();
conexao.Open();
// GridLembre.DataSource = da.Fill(ds, seltable);

GridLembre.DataSource = null;
conexao.Close();
conexao.Open();
// da.Fill(ds);
this.lembreTableAdapter.Fill(this.ortifaDataSet.Lembre);

GridLembre.DataSource = ortifaDataSet.Lembre;

conexao.Close();


agradeço a atenção de vcs!
até a próxima dúvida.. heheh
Responder

03/12/2011

Rodrigo Odasaki

Isso, exatamente.

Após o GridLembre.DataSource = null;
Colocar novamente no DataSource sua fonte de dados.
Responder

03/12/2011

Rodrigo Odasaki

Ah, não esqueça de fechar o tópico como resolvido.
Responder

03/12/2011

Dyego

entao, como faço isso? ;O
foi meu primeiro post, sou novo no forum
Responder

03/12/2011

Rodrigo Odasaki

Boa pergunta! rs
Também não sei!

hehehe


Não uso MSN, só Skype
Se quiser add rodrigo.odasaki

Porém só trabalho na plataforma Web
Responder

12/12/2011

Flavia Santos

Dyego,

Só uma duvida, seu grid está dentro de um update panel?
Responder

12/12/2011

Dyego

Update panel?

Não lembro de ter usado alguma ferramenta com este nome.

Apenas joguei o grid no formulário e selecionei meu data source
Responder

12/12/2011

Rodrigo Odasaki

Flavia, novamente, ele está em uma aplicação Windows Forms e não Web Forms
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar