Copia de Dados para Grids MVC

Olá Pessoal, estou com um problema em replicar dados de uma Grid para outra...Tenho uma

rotina X com Grid, e ao apertar um botão abre uma rotina Y também com Grid, ambas em MVC.

ao alterar os dados de ambas as Grids quero que elas recebam os mesmo dados alterados. O problema é que a primeira linha de ambas as Grids ficam vazias. só na segunda linha que é preenchida com os dados alterados.

Como são dois Fontes, vou separa-los aqui

Tela Principal:

//Define os dados para o Objeto da Classe NF
User Function AbreDT()
    Local cProduto  := ""
    Local nLinha    := 1    
    Local oModel      := FwModelActive()
    Local oView     := FwViewActive() //Objeto da View, adicionado para dar refresh após adicioar uma nova linha
    Local oGrid    := Nil
    Local nTotLin

    oModel:GetModel("CABEC")
    //Pegando os dados da Grid
    oGrid := oModel:GetModel("CABEC_ITENS")

    nTotLin := oGrid:Length(.F.)

    For nLinha := 1 To nTotLin
        //Posicionando na linha atual
        oGrid:GoLine(nLinha)
        //Se a linha tiver deletada
        If oGrid:IsDeleted()
            /* ... */

            //Senão, se não for inserção
        ElseIf ! oGrid:IsInserted()

            //POSIONAR NO CAMPO ALTERADO
            cProduto := oGrid:GetValue("PRODUTO_PROTHEUS") //Pegando conteudo da Grid campo PRODUTO

            If (!Empty("PRODUTO_PROTHEUS"))
                oItemNF:SetProdProtheus(cProduto)
                //...set dos campos que são alterados
                //..set dos campos que são alterados
            EndIf
        EndIf
    Next

    oGrid:SetLine(1)

    // Atualiza toda a tela*
    oView:getModel("CABEC_ITENS")

    //oGrid:goLine(nLinha)

    U_NFLNFE02(oView) //Função Tela de Detalhes

    oView:deActivate()
    oView:activate()
Return()

Fonte da Segunda Grid, Tela de Detalhes

User Function NFLNFE02(oView)
    Local aArea            := GetArea()
    Local aEnableButtons := {}
    Local nRet             := 1

    aEnableButtons    :=    {    { .F., Nil }, { .F., Nil }, ;
        { .F., Nil }, { .F., Nil }, ;
        { .F., Nil }, { .F., Nil }, ;
        { .T., Nil }, { .T., Nil }, ;
        { .F., Nil }, { .F., Nil }, ;
        { .F., Nil }, { .F., Nil }, ;
        { .F., Nil }, { .F., Nil }    } //"Confirmar"###"Fechar"

    oModelDT := FWLoadModel("NFLNFE02")
    oModelDT:SetOperation(4)

    oModelDT:Activate()

    oMdlGrid:= oModelDT:getModel("GRID_ITENS")

    oMdlGrid:SetLine(1)

    nRet := FWExecView("e" , "NFLNFE02", 4, /*oDlg*/, ,/* bOk*/ ,0/*nPercReducao*/, aEnableButtons, /*bCancel*/ , /*cOperatId*/, /*cToolBar*/, oModelDT)

    if nRet == 0 /*Confirmação da tela*/

        FWMsgRun(,{|| CursorWait(), oView:deActivate(), oView:activate(), CursorArrow() }, "NFLNFE02", "Atualizando...")

    endIf

    RestArea(aArea)
Return

Obs: Na imagem está o campo que ter que ser atualizado/alterado em ambas as Grid, é o o campo (Produto) na primeira linha vem em brando, na linha de baixo ele carrega o dado alterado. o resto dos campos tem um carregamento diferente já que utilizo um objeto, então já estão pré carregados.

Obriga desde já!

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags mvc advpl ou faça a sua própria pergunta.