Fwexecview - dados do model não aparecem na tela

Fwexecview - dados do model não aparecem na tela, como resolver?

Alimento o grid com dados, mas quando abre a tela o ultimo ítem não aparece. Fiz o debug e vi que o modelgrid está preenchido com todos os ítens.

segue parte do meu código:


// carrega o model para a tela produto e fornecedor
oModPrdFor := FWLoadModel("ProdFornec")
oModPrdFor:SetOperation(4) //alteracao pq os dados serao preenchidos automaticamente
oModPrdFor:Activate()
//carrega o browse prodfornec com os dados do xml
oModelGrid:= oModPrdFor:getModel("SA5DETAIL")

//loop para preencher o grid

    //Setando a linha atual
    oModelGrid:AddLine()
    //nLin := Len(oModelGrid:aCols)
    oModPrdFor:SetValue("SA5DETAIL", 'A5_CODPRF', xProduto)  //cod produto fornecedor
    oModPrdFor:SetValue("SA5DETAIL", 'A5_NOMPROD', oDet[nX]:_Prod:_xProd:TEXT)            
    oModPrdFor:SetValue("SA5DETAIL", 'A5_SITU', "C")
    oModPrdFor:SetValue("SA5DETAIL", 'A5_TEMPLIM', 1)                
    oModPrdFor:SetValue("SA5DETAIL", 'A5_FABREV', "F")    

depois preciso executar o refresh antes de chamar o FWExecView


nRet     := FWExecView( "Produto Fornecedor" , "ProdFornec", 4, /*oDlg*/, {|| .T. } ,/*bOk*/ , /*nPercReducao*/,;
/*aEnableButtons*/, /*bCancel*/ , /*cOperatId*/, /*cToolBar*/, oModPrdFor )

Boa noite Marco, antes do FWExecView, não existe view para efetuar o refresh, apenas o model.

Grato Daniel, tem um problema, eu alimento o grid, mas ele não traz todos os ítens na tela. Pensei que o refresh resolveria, você sabe o que devo fazer para mostrar todos os ítens do grid?

Isso é uma inclusão ou alteração? Você cita que os dados serão preenchidos automaticamente, mas você apresenta os dados para orientar uma inclusão? Pois se for alteração, o alias principal da tabela precisa estar posicionado para que o load no activate do modelo traga o registro correto, existem vários pontos importantes.

oModPrdFor:SetOperation(4) //eu faço a inclusão das linhas via programa e abro a tela para o usuário alterar.

Boa tarde Marco,

Veja se os comandos abaixo te ajudam.


Local oView            := FwViewActive()

Alimenta a grid

oView:Refresh('nome_da_view')

Mas é como o Daniel disse, não existe view antes do FWExecView, isso deveria ser feito após a abertura da tela.

Grato Felipe, melhorei a pergunta. Eu preencho o grid, mas não aparece todos os ítens preenchidos, pensei que um refresh ajudaria, mas qual poderia ser a solução neste caso?

Acredito que nesse caso Marco, você teria que usar o Load do seu modelo de dados da grid, para alimentar quando abrir a tela, deve resolver o problema

Grato novamente Felipe, como é este load? Sou iniciante em MVC.

Saudações,

Descobrir que não estava carregando todos os ítens do model porque o NCM do xml não existia no protheus. Como eu criei esta rotina justamente para tratar as inconsistência do XML, retirei as validações para carregar todos os ítens, depois fiz as validações no botão confirmar.