Boa tarde!
Possuo uma rotina onde exibo um Grid MVC comum com movimentos de notas fiscais.
Nela possuo um botão no Outras Ações que ao ser acionado, altera alguns campos da tabela deste Grid. Estou tendo problemas ao realizar a atualização destes campos no Grid. No banco os campos são atualizados corretamente, mas no grid não. E quando abro e fecho a janela, os campos são atualizados normalmente.
Existe algum comando que eu possa forçar a atualização dos dados/modelos do grid? Já tentei realizar um Refresh na View (FwFormView) e também forçar o Grid para ir pro final e pro inicio, mas ambas não funcionaram.
Boa noite Giordano, ao alterar esses dados da tabela, você altera diretamente no tabela? Não faz pelo modelo?
Giordano, bom dia.
O que você precisa fazer é pegar a View ativa e dar um refresh no objeto que deseja.
Local oView := FwViewActive()
oView:Refresh('VIEW_NF')
Espero ter ajudado.
Boa tarde, Felipe! Tentei realizar este procedimento mas não funcionou. Saberia me dizer se existe outro?
Giordano, poderia me mandar o fonte para que eu possa dar uma olhada?
Claro, poderia me passar seu e-mail ou Skype?
nesse tópico tem uma discussão detalhada desse assunto embora pra um problema diferente, pode ser que dê uma ajuda:
https://forum.totvs.io/t/grid-mvc-refresh/15781
Obrigado Josué, vou dar uma olhada.
Boa noite, pessoal!
Sei que esse tópico é um pouco antigo, mas finalmente consegui encontrar uma solução para esse problema. A solução encontrada foi a desativação e ativação do modelo, conforme o exemplo a seguir:
Static Function fSave
Local oModel := FwModelActive()
If(MsgYesNo('Esse processo irá gravar o consumo das verbas expostas na tela abaixo.' + CRLF + CRLF + 'Deseja prosseguir?','Gravar Consumo de Verbas'))
FwMsgRun(,{ || fUpdValues() },'Processamento de Ressarcimento','Atualizando valores realizados das verbas...')
oModel:DeActivate()
oModel:Activate()
MsgInfo('Valores gravados com sucesso!','Processamento de Ressarcimento')
Endif
Return
Após esse procedimento, os valores do grid foram atualizados normalmente, sem a necessidade de fechar e abrir a tela.