Estória da semana: MVC onde fica a regra de negócio

Veja mais

Socorro - DataGrid que não atualiza !!!!

12/11/2003

Putz ! Estou usando o C# Builder para construir uma aplicação mas estou tendo um grande problema com o DataGrid - ele não é atualizado !!!
O que estou fazendo de errado ???

-Evento onLoad do form:
(...)
conexao.Open();
MeuDataAdapter.Fill(MeuDataSet,´MinhaTable´);
MeuDataGrid.DataSource = MeuDataSet;
MeuDataGrid.DataMember = ´MinhaTable´;
conexao.Close();
- Isso faz com que os dados apareçam no DataGrid, beleza, isso esta correto. O problema vem agora:

- Evento OnClick do ´Botão Inserir´:
conexao.Open();
OleDbCommand MeuCommand = new OleDbCommand(´insert into...´,conexao);
MeuCommand.ExecuteNonQuery(); //isso grava o dado inserido
MeuDataAdapter.Update(MeuDataSet,´MinhaTable´);
MeuDataGrid.Update();
MeuDataGrid.Refresh();

=>A instrução SQL de Insert funciona perfeitamente, e o dado é inserido no BD, mas mesmo depois do Update e do Refresh, o dataGrid NÃO MOSTRA o novo registro. Por que ? Pelo amor de Deus, me ajudem pois já não sei mais o que fazer !!!!


Ibraim

Respostas

12/11/2003

Labega

Bom,

Nao deu para testar o que eu vou falar, mas de uma checada ai.

Bom DataSet é uma tabela em memória, totalmente isolado do bonco de dados.

o DataAdapter e a ´ponte´ entre o BD e o DataSet.

Vamos la, qnd vc chama o update do adapter, ele envia as mudanças feitas no DataSet para o banco (verifique a propriedade UpdateCommand, ou algo assim), é natural o que ocorre. Ele nao ira novamente no banco e atualizaro DataSet.

Faça o seguinte, adicione um novo registro no DataSet, apos isso chame o Update do Adapter, dai o grid atualiza e o banco tb.

Acho q dara certo.

[]´s


Responder Citar

12/11/2003

Ibraim

Beleza, eu entendi a sua idéia, mas não sei como montar o código (eu ainda estou aprendendo). Como ficaria o meu código então ? Vc poderia me dar um exemplo ?
Isso pq, enqto nao acho uma solução ´correta´, o que estou fazendo é dar um DataSet.Clear(); e depois usar o Fill do DataAdapter em cima...
Desde já, valeu pela ajuda cara !


Responder Citar