Olá,
Gostaria de permitir que o usuário determine a ordem dos registros em um grid em MVC (funcionalidade igual à alterar a ordem dos campos no Configurador), como faço para dar o "refresh" para assim que o usuário alterar a ordem já refletir na tela.
Estou anexando a parte do código de reordenar os registros.
User Function ORDEM()
Local aSaveLines := FWSaveRows()
Local oModel := FwModelActive()
Local oModelZF2 := oModel:GetModel("ZF2DETAL")
Local oView := FwViewActive()
Local nLinha := 0
Local cItem := "01"
Local nLinAlt := 0
Local cItemAlt := ""
// Informações da linha alterada
nLinAlt := oModelZF2:GetLine()
cItemAlt := oModelZF2:GetValue("ZF2_ITEM")
For nLinha := 1 To oModelZF2:Length(.T.)
// Alterar se não for a linha alterada e não estiver deletada
If !(nLinha = nLinAlt) .And. !oModelZF2:IsDeleted()
// Posiciona na linha do grid e soma mais um se o valor for igual
oModelZF2:GoLine(nLinha)
If cItem == cItemAlt
cItem := Soma1(cItem)
EndIf
// Atribui o valor para o modelo e soma mais um
oModelZF2:LoadValue("ZF2_ITEM", cItem)
cItem := Soma1(cItem)
EndIf
Next
// Reposicionar na linha anterior
FWRestRows(aSaveLines)
oView:Refresh()
Return .T.
Eu ainda não precisei fazer. Na teoria você teria que reordenar os registros da área selecionada, depois redesenhar a tela, que eu acho que vai ser o mais difícil.
— Clodoaldo Ribeiro 25 de Aug de 2021