C# DataGrid não atualiza
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:
Desde já agradeço pela atenção!
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
Curtidas 0
Respostas
Dyego
28/11/2011
fulano
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!
GOSTEI 0
Rodrigo Odasaki
28/11/2011
Após adicionar o registro, você não pode implementar no mesmo método um outro método para atualizar seu datagrid?
GOSTEI 0
Dyego
28/11/2011
Opa!
Então Rodrigo, eu tentei usar o data adapter de diversas formas, mas realmente não atualiza..
é necessário fechar o programa e abrir novamente para atualizar o dataGrid...
Eu vi em um tópico uma linha dizendo Grid.DataBind; mas aqui o visual não reconhece este comando, mesmo com todos using relacionados
Agradeço a atenção, e peço desculpas aos moderados pelo post duplo, sou novo no forum..
Então Rodrigo, eu tentei usar o data adapter de diversas formas, mas realmente não atualiza..
é necessário fechar o programa e abrir novamente para atualizar o dataGrid...
Eu vi em um tópico uma linha dizendo Grid.DataBind; mas aqui o visual não reconhece este comando, mesmo com todos using relacionados
Agradeço a atenção, e peço desculpas aos moderados pelo post duplo, sou novo no forum..
GOSTEI 0
Rodrigo Odasaki
28/11/2011
DataBind() você utiliza no ASP.NET para renderizar seu controle.
GOSTEI 0
Rodrigo Odasaki
28/11/2011
Tente assim:
TableAdapter.Fill(DataSet.Tabela);
TableAdapter.Fill(DataSet.Tabela);
GOSTEI 0
Dyego
28/11/2011
Obrigado Rodrigo!
Testei o código aqui,mas infelizmente não rodou...
ele diz que não tem definição pra tabela entre parenteses, no caso:
ficou assim: lembreTableAdapter.Fill(DataSet.lembre);
a palavra lembre dentro de parenteses sublinhada em vermelho com o seguinte erro:
Error: System.Data.Dataset does not contain a definition for lembre
Testei o código aqui,mas infelizmente não rodou...
ele diz que não tem definição pra tabela entre parenteses, no caso:
ficou assim: lembreTableAdapter.Fill(DataSet.lembre);
a palavra lembre dentro de parenteses sublinhada em vermelho com o seguinte erro:
Error: System.Data.Dataset does not contain a definition for lembre
GOSTEI 0
Rodrigo Odasaki
28/11/2011
Se possível mostra o método que renderiza o DataGrid
GOSTEI 0
Dyego
28/11/2011
Olá Rodrigo,
infelizmente sou novo ainda na área de C#, não saberia te dar tal informação
mas o único código que estou usando foi esse que postei, o que mostra no dataGrid é selecionado nele mesmo,sem codificação
ainda não consegui resolver o problema
infelizmente sou novo ainda na área de C#, não saberia te dar tal informação
mas o único código que estou usando foi esse que postei, o que mostra no dataGrid é selecionado nele mesmo,sem codificação
ainda não consegui resolver o problema
GOSTEI 0
Flavia Santos
28/11/2011
Após o método de inserir, alterar ou excluir inclua o código abaixo, alterando o nome do método de pesquisa objPesquisa() e incluindo os parametros necessários:
GridView1.DataSource = objPesquisa();
GridView1.DataBind();
Onde ObjPesquisa() é o método que você já tem criado para popular o grid.
GridView1.DataSource = objPesquisa();
GridView1.DataBind();
Onde ObjPesquisa() é o método que você já tem criado para popular o grid.
GOSTEI 0
Dyego
28/11/2011
Não existe a propriedade DataBind no C# :/
GOSTEI 0
Rodrigo Odasaki
28/11/2011
DataBind é no ASP.NET
Você está em uma aplicação WindowsFormns né?
Você está em uma aplicação WindowsFormns né?
GOSTEI 0
Dyego
28/11/2011
isso!
como disse, é um programa de atividades recentes..
ainda to na batalha pra resolver este problema! heheh
como disse, é um programa de atividades recentes..
ainda to na batalha pra resolver este problema! heheh
GOSTEI 0
Rodrigo Odasaki
28/11/2011
Solução:
Você precisa definir como nulo o seu datasource e depois popular ele.
Lembrando que a propriedade AutoGeneratiionColumn deve ficar como true, caso você não tenha mapeado as colunas.
private void button1_Click(object sender, EventArgs e)
{
var clientes = (List<Cliente>) dataGridView1.DataSource;
clientes.Add(new Cliente { Codigo = 4, Nome = Buscapé });
dataGridView1.DataSource = null;
dataGridView1.DataSource = clientes;
}
Você precisa definir como nulo o seu datasource e depois popular ele.
Lembrando que a propriedade AutoGeneratiionColumn deve ficar como true, caso você não tenha mapeado as colunas.
private void button1_Click(object sender, EventArgs e)
{
var clientes = (List<Cliente>) dataGridView1.DataSource;
clientes.Add(new Cliente { Codigo = 4, Nome = Buscapé });
dataGridView1.DataSource = null;
dataGridView1.DataSource = clientes;
}
GOSTEI 0
Dyego
28/11/2011
opa!
bela colocação rodrigo, eu já tinha tentado desta maneira mas não sabia do generation.. vou testar aqui e posto pra ver o que rolou. obrigado pela atenção meu camarada!
bela colocação rodrigo, eu já tinha tentado desta maneira mas não sabia do generation.. vou testar aqui e posto pra ver o que rolou. obrigado pela atenção meu camarada!
GOSTEI 0
Dyego
28/11/2011
então rodrigo, não tem essa propriedade no dataGrid não...
eu to com o código que tava testando já de por em nulo o data source e depois reconectar
mas ele só poe nulo e não reconecta... estranho isso
eu to com o código que tava testando já de por em nulo o data source e depois reconectar
mas ele só poe nulo e não reconecta... estranho isso
GOSTEI 0
Rodrigo Odasaki
28/11/2011
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.
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.
GOSTEI 0
Dyego
28/11/2011
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
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
GOSTEI 0
Dyego
28/11/2011
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
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
GOSTEI 0
Rodrigo Odasaki
28/11/2011
Isso, exatamente.
Após o GridLembre.DataSource = null;
Colocar novamente no DataSource sua fonte de dados.
Após o GridLembre.DataSource = null;
Colocar novamente no DataSource sua fonte de dados.
GOSTEI 0
Rodrigo Odasaki
28/11/2011
Ah, não esqueça de fechar o tópico como resolvido.
GOSTEI 0
Dyego
28/11/2011
entao, como faço isso? ;O
foi meu primeiro post, sou novo no forum
foi meu primeiro post, sou novo no forum
GOSTEI 0
Rodrigo Odasaki
28/11/2011
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
Também não sei!
hehehe
Não uso MSN, só Skype
Se quiser add rodrigo.odasaki
Porém só trabalho na plataforma Web
GOSTEI 0
Flavia Santos
28/11/2011
Dyego,
Só uma duvida, seu grid está dentro de um update panel?
Só uma duvida, seu grid está dentro de um update panel?
GOSTEI 0
Dyego
28/11/2011
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
Não lembro de ter usado alguma ferramenta com este nome.
Apenas joguei o grid no formulário e selecionei meu data source
GOSTEI 0
Rodrigo Odasaki
28/11/2011
Flavia, novamente, ele está em uma aplicação Windows Forms e não Web Forms
GOSTEI 0